Python3.2官方文档翻译--异常抛出和自定义异常

Python3.2官方文档翻译--异常抛出和自定义异常


Python3.2官方文档翻译--异常抛出和自定义异常,有需要的朋友可以参考下。


6.4 抛出异常

Raise语句运行程序员强制抛出一个具体的异常。例如:

>>>raiseNameError(’HiThere’)

Traceback(mostrecentcalllast):

File"<stdin>",line1,in?

NameError:HiThere

Raise的唯一参数描述了将要抛出的异常。这可以是一个异常的实例或者一个异常类。(继承Exception类)

如果你想要判定是否抛出了一个异常但是不想处理它,raise语句有种简单的形式可以帮助你重新抛出异常。

>>>try:

...raiseNameError(’HiThere’)

...exceptNameError:

...print(’Anexceptionflewby!’)

...raise

...

Anexceptionflewby!

Traceback(mostrecentcalllast):

File"<stdin>",line2,in?

NameError:HiThere

6.5 用户自定义异常

程序员可以通过创建一个新异常类定义自己的异常。异常类要求直接或者间接继承exception类。

>>>classMyError(Exception):

...def__init__(self,value):

...self.value=value

...def__str__(self):

...returnrepr(self.value)

...

>>>try:

...raiseMyError(2

*

2)

...exceptMyErrorase:

...print(’Myexceptionoccurred,value:’,e.value)

...

Myexceptionoccurred,value:4

>>>raiseMyError(’oops!’)

Traceback(mostrecentcalllast):

File"<stdin>",line1,in?

__main__.MyError:’oops!’

在这个例子中,异常Exception类中默认的方法_init_()被重写了。新作用就是简单创建一个value的属性。这替换了创建args属性的默认行为。

异常类可以定义其他类做的任何事情。但是常常比较简单,仅仅提供一些让异常处理器来提取的错误信息的属性。当创建一个能抛出不同异常的模块时候,习惯做法就是创建一个为这个模块异常定义的基类。子类可以为不同的错误情况创建不同的具体异常。

classError(Exception):

"""Baseclassforexceptionsinthismodule."""在这个模块中的异常基类

pass

classInputError(Error):

"""Exceptionraisedforerrorsintheinput.输入时候抛出异常

Attributes:

expression--inputexpressioninwhichtheerroroccurred

message--explanationoftheerror

"""

def__init__(self,expression,message):

self.expression=expression

self.message=message

classTransitionError(Error):

"""Raisedwhenanoperationattemptsastatetransitionthat’snot

Allowed.当一个操作试图访问不允许访问的状态事务时抛出异常

Attributes:

previous--stateatbeginningoftransition在事务开始时的状态

next--attemptednewstate操作新的状态

message--explanationofwhythespecifictransitionisnotallowed解释具体事务异常不允许的原因

"""

def__init__(self,previous,next,message):

self.previous=previous

self.next=next

self.message=message

大多数异常定义以Error结尾,这和标准异常的命名有点相似。

许多标准模块定义了自己的异常,来显示在它方法中可能发生的异常。更多的详细信息请参考类节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值