Python异常处理和提升

时间:2014-08-20 12:55:43

标签: python exception error-handling nested raise

让我们说我有以下3个脚本:

script1.py
script2.py
script3.py

让我说我得到这样的追溯:

Traceback (most recent call last):
File "script1.py", line xyz, in ...
...
File "script2.py", line xyz, in ...
...
File "script3.py", line xyz, in ...
...
AttributeError: 'NoneType' object has no attribute 'CoolAttribute'

我在script3.py中有几个不同的例外。有没有办法在script1.py中的xyz行处理任何这些异常而不处理script2.py中的异常?我只是想在script1.py中的一行中处理源自script3.py的异常。

1 个答案:

答案 0 :(得分:1)

一个简单的脏方法是使用try包装simple3.py,除了关闭并在任何script3异常上引发自定义异常。

class BaseSimpleError(Exception):
    """dummy class for all Simple3 errors"""

try:
    ...your simple3.py goes here...
except Exception, e:
    raise BaseSimpleError()

在script1中,您应该导入BaseSimpleError并在需要时捕获它。