python 引发异常,Python——raise引发异常

程序出现错误,会自动引发异常,python也允许使用raise语句自行引发异常。

一、使用raise引发异常

单独一个raise引发异常,默认引发runtimeerror异常,例:

try:

print ('正在运行try块...')

raise

print ('不再运行...')

except exception as e:

print ('正在运行except块...')

# 运行结果

正在运行try块...

正在运行except块...

raise后带一个异常类,引发指定异常类的默认实例,例:

def test():

try:

print ('正在运行try块...')

raise syntaxerror('引发指定异常...')

print ('不再运行...')

except typeerror as e:

print ('对类型无效的操作...',e)

except valueerror as e:

print ('传入无效的参数...',e)

except syntaxerror as e:

print ('语法错误...',e)

test()

# 运行结果

正在运行try块...

语法错误... 引发指定异常...

二、自定义异常类

python运行自定义异常类,自定义异常都应该继承exception基类或exception的子类,自定义类大部分情况下都可以采用auctionexception.py类似的代码来完成,只要改变auctionexception异常的类名即可(使类名更准确的描述该异常)。

自定义一个异常类,例:

class customexception(exception):

pass

def test():

try:

raise customexception

except customexception:

print ('触发异常...')

test()

# 运行结果

触发异常...

三、except和raise组合使用

当出现一个异常时,单单靠一个方法无法完全处理该异常,必须使用几个方法协作才能完全处理该异常时,就用到except块结合raise语句来完成。

例:

# 自定义异常

class customexception(exception):

pass

class test:

def custom(self):

try:

aaa

except exception as e:

print ('出现异常:',e)

raise customexception('触发自定义异常~')

def test():

t = test()

try:

t.custom()

except customexception as e:

print ('test函数捕获异常;',e)

test()

# 打印

出现异常: name 'aaa' is not defined

test函数捕获异常; 触发自定义异常~

上面程序中,aaa触发了nameerror异常,执行test类中的except块,打印错误信息后,通知该方法调用者再次处理customexception异常,所以custom()方法的调用者test()函数可以再次捕获customexception异常,把异常详细信息打印出来。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值