Python 捕获所有自定义异常
我为Django项目创建了许多自定义异常。像这样 错误。pyPython 捕获所有自定义异常,python,Python,我为Django项目创建了许多自定义异常。像这样 错误。py # General Exceptions class VersionError(Exception): pass class ParseError(Exception): pass class ConfigError(Exception): pass class InstallError(Exception): pass 但是,我希望打印自定义异常的输出,而不是常规异常的输出。但不想将它们全部
# General Exceptions
class VersionError(Exception):
pass
class ParseError(Exception):
pass
class ConfigError(Exception):
pass
class InstallError(Exception):
pass
但是,我希望打印自定义异常的输出,而不是常规异常的输出。但不想将它们全部列出,即
try:
do something wrong
except <custom errors>, exc:
print exc
except:
print "Gen
试试看:
做错事
除行政会议外:
打印exc
除:
打印“Gen”
您应该为所有自定义异常创建一个公共基类,并捕获它。您应该为所有自定义异常创建一个公共基类,并捕获它。您应该为自定义异常定义一个自定义标记基类:
# General Exceptions
class MyException(Exception):
"""Just a marker base class"""
class VersionError(MyException):
pass
class ParseError(MyException):
pass
class ConfigError(MyException):
pass
class InstallError(MyException):
pass
my_exceptions = (VersionError,
ParseError,
ConfigError,
InstallError)
通过该修改,您可以轻松地说:
try:
do something wrong
except MyException as exc:
print exc
except:
print "Some other generic exception was raised"
(顺便说一句,您应该使用推荐的
Exception as ex
语法,而不是Exception,ex
,有关详细信息,请参阅)您应该为自定义异常定义自定义标记基类:
# General Exceptions
class MyException(Exception):
"""Just a marker base class"""
class VersionError(MyException):
pass
class ParseError(MyException):
pass
class ConfigError(MyException):
pass
class InstallError(MyException):
pass
my_exceptions = (VersionError,
ParseError,
ConfigError,
InstallError)
通过该修改,您可以轻松地说:
try:
do something wrong
except MyException as exc:
print exc
except:
print "Some other generic exception was raised"
(顺便说一句,您应该使用推荐的
Exception as ex
语法,而不是Exception,ex
,有关详细信息,请参阅)创建自定义基本异常并从该基本执行选项派生所有其他自定义异常:
class CustomBaseException(Exception):
pass
# General Exceptions
class VersionError(CustomBaseException):
pass
class ParseError(CustomBaseException):
pass
class ConfigError(CustomBaseException):
pass
class InstallError(CustomBaseException):
pass
那你就可以了
try:
do something wrong
except CustomBaseExecption, exc:
print exc
except:
print "Gen
创建自定义基本异常并从此基本执行选项派生所有其他自定义异常:
class CustomBaseException(Exception):
pass
# General Exceptions
class VersionError(CustomBaseException):
pass
class ParseError(CustomBaseException):
pass
class ConfigError(CustomBaseException):
pass
class InstallError(CustomBaseException):
pass
那你就可以了
try:
do something wrong
except CustomBaseExecption, exc:
print exc
except:
print "Gen
规范的方法是为所有异常创建公共超类
# General Exceptions
class MyAppError(Exception):
pass
class VersionError(MyAppError):
pass
class ParseError(MyAppError):
pass
class ConfigError(MyAppError):
pass
class InstallError(MyAppError):
pass
通过这三个继承,您可以简单地捕获类型为MyAppError
的所有异常
try:
do_something()
except MyAppError as e:
print e
规范的方法是为所有异常创建公共超类
# General Exceptions
class MyAppError(Exception):
pass
class VersionError(MyAppError):
pass
class ParseError(MyAppError):
pass
class ConfigError(MyAppError):
pass
class InstallError(MyAppError):
pass
通过这三个继承,您可以简单地捕获类型为MyAppError
的所有异常
try:
do_something()
except MyAppError as e:
print e
您可以创建异常的元组:
# General Exceptions
class MyException(Exception):
"""Just a marker base class"""
class VersionError(MyException):
pass
class ParseError(MyException):
pass
class ConfigError(MyException):
pass
class InstallError(MyException):
pass
my_exceptions = (VersionError,
ParseError,
ConfigError,
InstallError)
用法:
except my_exceptions as exception:
print exception
e、 g:
my_exceptions=(LookupError、ValueError、TypeError)
>>>尝试:
…int('a')
…除了作为例外的my_例外:
…打印类型(例外)
…打印异常
基数为10的int()的文本无效:“a”
您可以创建异常的元组:
# General Exceptions
class MyException(Exception):
"""Just a marker base class"""
class VersionError(MyException):
pass
class ParseError(MyException):
pass
class ConfigError(MyException):
pass
class InstallError(MyException):
pass
my_exceptions = (VersionError,
ParseError,
ConfigError,
InstallError)
用法:
except my_exceptions as exception:
print exception
e、 g:
my_exceptions=(LookupError、ValueError、TypeError)
>>>尝试:
…int('a')
…除了作为例外的my_例外:
…打印类型(例外)
…打印异常
基数为10的int()的文本无效:“a”