Python Try/Exception类型的特定错误除外
我有一个特定的功能,在某些情况下执行以下操作: 引发异常“someError” 并可能在其他情况下提出其他例外情况 我想区别对待函数引发异常、“someError”的情况和函数引发其他异常的情况 例如,我尝试了以下方法,但没有达到预期效果Python Try/Exception类型的特定错误除外,python,try-catch,Python,Try Catch,我有一个特定的功能,在某些情况下执行以下操作: 引发异常“someError” 并可能在其他情况下提出其他例外情况 我想区别对待函数引发异常、“someError”的情况和函数引发其他异常的情况 例如,我尝试了以下方法,但没有达到预期效果 try: raise Exception, 'someError' except Exception('someError'): print('first case') except: print ('second case') 这将
try:
raise Exception, 'someError'
except Exception('someError'):
print('first case')
except:
print ('second case')
这将打印“第二个案例”…您可以查看异常的消息属性
>>> try:
... raise Exception, 'someError'
... except Exception as e:
... if e.message == 'someError':
... print 'first case'
... else:
... print 'second case'
...
first case
但是它很粗糙。最好只创建两个单独的异常并分别捕获每个异常。您必须定义自己的异常类:
class FooErr(Exception):
pass
try:
raise FooErr("bar occured")
except FooErr:
print("don't care about foo")
except:
print("don't care about anything.")
有关更多详细信息,请参阅。通过强制打印特定异常的属性,我能够找到错误号所在的
WindowsError
import os
try:
os.mkdir('name') # folder already created, will error
except WindowsError as e:
if e.winerror == 183:
print 'This is the "Cannot create a file when that file already exists" error'
else:
print "This is an error I don't know about"
raise
我猜其他异常也有类似的属性当然,真正的解决方案是更改该函数以引发不同且更合适的异常。谢谢,我同意最好为此设置特定的异常类,但我不希望这样做,因为这个功能是“第三方”的,这对我不起作用。如果str(e)=‘someError’,我必须这样做,因为我发现e.message不包含我感兴趣的字符串