假设我有两个例外:class FooError (Exception):
def __init__(self, *args, **kwargs):
default_message = 'A foo error has occurred!'
if not (args or kwargs): args = (default_message,)
super().__init__(*args, **kwargs)
class BarError (Exception):
def __init__(self, *args, **kwargs):
default_message = 'A bar error has occurred!'
if not (args or kwargs): args = (default_message,)
super().__init__(*args, **kwargs)
我有一个函数,它抛出FooError:
^{pr2}$
通常,您将使用try/except块来处理FooError:try:
foobar(-1)
except FooError:
print('Uh oh, foo error!')
sys.exit()
但是,我想抛出一个BarError,我可以稍后处理。像这样:except BarError:
print('Uh oh, bar error!')
sys.exit()
但是,在执行此操作时,我只得到两个错误的回溯:Traceback (most recent call last):
File "C:\Users\Maze\Desktop\test2.py", line 17, in
foobar(-1)
File "C:\Users\Maze\Desktop\test2.py", line 15, in foobar
raise FooError()
__main__.FooError: A foo error has occurred!
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Maze\Desktop\test2.py", line 19, in
raise BarError()
__main__.BarError: A bar error has occurred!
如何在FooError的处理程序内抛出BarError,然后在另一个except块中处理BarError?在