我正在编写一个有各种功能的代码。我为每个特定的函数创建了.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(),它会在控制台上打印出我不需要的警告,因为该项目适用于那些不了解该警告的人。
答案 0 :(得分:2)
如果您担心sys.exit()
"会打印警告" (我无法在我的系统上确认 - 应用程序刚刚存在且控制台中没有打印警告)您可以通过提示消息提出SystemExit
:
raise SystemExit("Everything is fine.")
答案 1 :(得分:1)
如果我使用exit命令结束代码,它将结束整个执行
是的,它会(假设你的意思是sys.exit()
)。
或只是游戏模块
不,它会退出整个程序。
答案 2 :(得分:0)
如果你想在程序退出时隐藏警告(这个警告可能是堆栈痕迹,很难从你的问题中猜出)那么你可以将你的代码包装在try除了块之外:
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")
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)
使用此功能,当您的程序意外退出时,您的用户将无法在控制台上看到任何消息。通过阅读excetions.log文件,您将能够看到发生了什么异常。