我正在编写一个代码,其中包含各种函数。我已经为每个特定功能创建了.py文件,并在需要时导入它们。示例代码:
# main.py file
import addition
import subtraction
a = input("enter a")
b = input("enter b")
c = input("enter 1 to add 2 to subtract")
if a == 1:
addition.add(a, b) # call to add function in addition module
subtraction.minus(a, b) # call to subtract function in subtraction module
# More code here
# addition.py module
import game # import another self-created module
y = input("do you want to play a game? Enter 1 if yes and 0 if no")
if y == 1:
game.start()
# more similar code
现在,既然您可以看到我正在多个级别调用模块内的模块。所以我的问题在我的game
模块中,如果我使用 exit 命令结束代码,它会结束整个执行还是只结束game
模块? 当我在代码中出现一些异常时,我需要一个命令来退出整个代码执行。
注意:我不希望 exit 命令在控制台上打印任何内容。由于我之前在另一个项目中使用过 sys.exit(),它在控制台上打印了我不需要的警告,因为该项目适用于不了解该警告是什么的人。
如果您担心sys.exit()
"打印警告"(我无法在我的系统上确认 - 应用程序只是存在并且控制台中没有打印警告),您可以使用您选择的消息提出SystemExit
:
raise SystemExit("Everything is fine.")
如果我使用 exit 命令结束代码,它会结束整个执行吗
是的,它会(假设你的意思是sys.exit()
)。
或者只是游戏模块
不,它将退出整个程序。
如果你想在程序退出时隐藏警告(这个警告可能是堆栈跟踪,很难从你的问题中猜到),那么你可以将你的代码包装在 try but block 中:
import addition
import subtraction
try:
a = input("enter a")
b = input("enter b")
c = input("enter 1 to add 2 to subtract")
if a == 1:
addition.add(a, b) # call to add function in addition module
subtraction.minus(a, b) # call to subtract function in subtraction module
# ...
except Exception:
pass
请注意,这种技术被认为是非常糟糕的,您可能应该记录异常,例如文件。
在你的模块中发送用户sys.exit()的十个使用这个:
# addition.py module
import game # import another self-created module
y = input("do you want to play a game? Enter 1 if yes and 0 if no")
if y == 1:
game.start()
# more similar code
# suppose you want to exit from here
# dont use sys.exit()
# use
raise Exception("Something went wrong")
Finnaly 将异常记录到文件
import addition
import subtraction
import logging
# log to file
logging.basicConfig(filename='exceptions.log',level=logging.DEBUG)
try:
a = input("enter a")
b = input("enter b")
c = input("enter 1 to add 2 to subtract")
if a == 1:
addition.add(a, b) # call to add function in addition module
subtraction.minus(a, b) # call to subtract function in subtraction module
# ...
except Exception as e:
logging.exception(e)
使用此功能,当您的程序意外退出时,您的用户将不会在控制台上看到任何消息。您将能够通过读取 exextion.log 文件来查看发生了哪些异常。
更多信息
- 例外情况 https://docs.python.org/2/tutorial/errors.html#exceptions
- 日志记录 https://docs.python.org/2/howto/logging.html