[英]Why isn't my user defined exception being handled properly?
我想知道我在我的python程序中从一个类中引发的用户定义的异常不是由我的main()
的正确异常处理程序处理的。 说我有一节课:
class Pdbalog:
# Constructor
def __init__(self, logtype):
if logtype == 1 or logtype == 2:
# These are valid
self.logtypeV = logtype
...<continue processing>
else:
# Invalid
raise Exception("Invalid Logtype")
我的main
看起来像:
from pdbalog import *
def main():
try:
mylog = Pdbalog(10)
...<other code here>
except "Invalid Logtype":
print('Exiting...')
except:
print('Unhandled exception')
raise
我希望当main
运行时,我实例化Pdbalog
对象的行会引发异常( Exception("Invalid Logtype")
)并且main中的异常处理程序( except "Invalid Logtype"
)将打印输出字符串"Exiting..."
。 但事实并非如此。 它由未处理的异常处理程序处理。 最终发生的是输出字符串"Unhandled exception"
。 为什么不是
except "Invalid Logtype":
处理异常?
我使用的是旧版本的python(2.4)。
Exception("Invalid Logtype")
仍然只是一个Exception
,现在只有一条错误消息。 "Invalid Logtype"
不是错误,只是一个str
,所以你无法捕捉它。
尝试:
class InvalidLogtype(Exception): pass
try:
raise InvalidLogType
except InvalidLogType:
pass
请注意,您可以通过执行操作来捕获错误消息
except Exception, e:
if e.args == ("Invalid Logtype",):
...
else:
raise
试试这个:
class InvalidLogType(Exception):
pass
然后
raise InvalidLogType()
然后
except InvalidLogType:
etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.