我有某种功能在某些情况下会做以下事情:
引发异常,'someError'
并且可能在其他情况下引发其他例外。
我想以不同的方式处理函数引发Exception,'someError'以及函数引发其他异常的情况。
例如,我尝试了以下操作,但它没有按预期工作。
try:
raise Exception, 'someError'
except Exception('someError'):
print('first case')
except:
print ('second case')
这会打印'第二种情况'......
答案 0 :(得分:10)
您可以查看异常的消息属性
>>> try:
... raise Exception, 'someError'
... except Exception as e:
... if e.message == 'someError':
... print 'first case'
... else:
... print 'second case'
...
first case
但它非常hacky。最好只创建两个单独的异常并单独捕获每个异常。
答案 1 :(得分:3)
您必须定义自己的异常类:
class FooErr(Exception):
pass
try:
raise FooErr("bar occured")
except FooErr:
print("don't care about foo")
except:
print("don't care about anything.")
有关详细信息,请参阅http://docs.python.org/tutorial/errors.html#user-defined-exceptions。
答案 2 :(得分:0)
通过强制打印特定异常的属性,我能够找到错误号所在的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
,至少是table Blob {
name : string;
size : ulong;
data : [ubyte];
}
。
def BlobStart(builder): builder.StartObject(3)
def BlobAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0)
def BlobAddSize(builder, size): builder.PrependUint64Slot(1, size, 0)
def BlobAddData(builder, data): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(data), 0)
def BlobStartDataVector(builder, numElems): return builder.StartVector(1, numElems, 1)
def BlobEnd(builder): return builder.EndObject()
我猜其他异常也有类似的属性