如果我从命令行执行该函数时遇到异常,我想退出Python,但是如果我的函数不是从命令行运行的,我想引发一个异常并打印堆栈跟踪。
现在我有
try:
#...
except Exception as e:
print('ERROR: Some useful message')
if __name__ == '__main__':
raise SystemExit
else:
raise e
但我觉得我在这里做的太多或太少。
从命令行运行我的函数时,是否有惯用的方法来获取堆栈跟踪并获得原始异常;但是如果它是从命令行运行的,则直接退出?
最佳答案
更好的方法是这样做:
import sys
def func():
do_actual_processing()
if not successful:
raise Exception("Yadayada")
if __name__ == '__main__'
try:
func()
except Exception as e:
sys.exit(1)
即,该函数本身不必关心是否从命令行运行。