python raise_python raise

当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。

演示raise用法

try:

s = None

if s is None:

print "s 是空对象"

raise NameError #如果引发NameError异常,后面的代码将不能执行

print len(s) #这句不会执行,但是后面的except还是会走到

except TypeError:

print "空对象没有长度"

s = None

if s is None:

raise NameError

print 'is here?' #如果不使用try......except这种形式,那么直接抛出异常,不会执行到这里

触发异常

我们可以使用raise语句自己触发异常

raise语法格式如下:

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

实例

一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

定义一个异常非常简单,如下所示:

def functionName( level ):

if level < 1:

raise Exception("Invalid level!", level)

# 触发异常后,后面的代码就不会再执行

注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。

例如我们捕获以上异常,"except"语句如下所示:

try:

正常逻辑

except Exception,err:

触发自定义异常

else:

其余代码

实例

#!/usr/bin/python

# -*- coding: UTF-8 -*-

# 定义函数

def mye( level ):

if level < 1:

raise Exception,"Invalid level!"

# 触发异常后,后面的代码就不会再执行

try:

mye(0) # 触发异常

except Exception,err:

print 1,err

else:

print 2

执行以上代码,输出结果为:

$ python test.py

1 Invalid level!

python3.6以后 改为

def mye( level ):

if level < 1:

raise Exception("Invalid level!")

# 触发异常后,后面的代码就不会再执行

try:

mye(0) # 触发异常

except Exception as err:

print(1,err)

else:

print(2)

承接Matlab、Python和C++的编程,机器学习、计算机视觉的理论实现及辅导,本科和硕士的均可,咸鱼交易,专业回答请走知乎,详谈请联系QQ号757160542,非诚勿扰。

本文同步分享在 博客“于小勇”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值