python最简单的异常处理语句是_Python raise语句:主动抛出异常

通常情况下,我们的代码不会主动抛出异常,而是通过返回一个错误码来告知调用者这里出现了不该出现的错误。其实我们也可以在代码中抛出异常,通过异常将相关的错误信息发送出去。

可以使用 raise 语句来抛出异常,该语句后面需要带一个对象,该对象必须是派生自 BaseException。基本语法如下:

raise 派生自BaseException的对象

下面就是一个代码主动抛出异常的例子,其在检测到参数 b 为 0 时就抛出异常。

>>> def finally_demo(a, b):

... if b == 0:

... raise Exception('my personal exception') # 抛出异常

...

>>> try: # 捕捉异常

... finally_demo(12, 0)

... except Exception, e: # 捕捉任意异常

... print("Exception Message: %s" % e.message) # 显示异常信息

... # 结束异常捕捉

Exception Message: my personal exception # 第8行的输出

就像前面介绍的那样,抛出的对象必须继承自 BaseException,否则 raise 自身会抛出异常。下面的例子就演示了这种情况。

>>> raise 8 # 对象8不是继承自BaseException,抛出TypeError异常

Traceback (most recent call last):

File "", line 1, in

TypeError: exceptions must derive from BaseException

>>> raise Exception('my personal exception') # 抛出Exception异常

Traceback (most recent call last):

File "", line 1, in

Exception: my personal exception

这里需要强调一下异常对象的继承关系,所有系统定义的异常对象都继承自 Exception,而 Exception 继承自 BaseException。所以如果自定义一个异常类型也是可以的,只需要继承自 Exception 即可。

下面是一个使用自定义异常的例子,涉及类的使用。类的使用需要到后面的章节才会详细介绍,这里简单了解即可。完整代码如下:

>>> class UserdefException(Exception): # 自定义的异常类

... def __init__(self, msg):

... self.msg = msg

... # 定义结束

>>> try: # 进入捕捉区

... raise UserdefException("experiment") # 抛出异常

... except UserdefException as ex_obj: # 捕捉到该异常

... print(u"子定义异常,错误信息: %s" % ex_obj)

... # 捕捉区结束

子定义异常,错误信息: experiment # 第8行输出的信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值