在我用Python 3实现的解析器中,我想收集所有潜在的错误,然后适当地设置退出代码,而不是在第一次出现错误时调用exit或引发异常。我的第一种方法是
exit_code = 0
def log_error(msg):
global exit_code
exit_code = 1
print(msg, file=sys.stderr)
@atexit.register
def myexit():
global exit_code
sys.exit(exit_code)
但是由于a current Python issue,这是不可能的,并且公认很黑。
对我来说,这似乎是一个常见的问题,所以我希望有一个更好的解决方案。