繁体   English   中英

为什么我的用户定义的异常没有得到正确处理?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM