程序出现错误,会自动引发异常,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异常,把异常详细信息打印出来。

Python——raise引发异常的更多相关文章

  1. python自定义异常,使用raise引发异常

    1.自定义异常类,自定义的异常类必须是Exception或者Error的子类! 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 class Illega ...

  2. python——异常except语句用法与引发异常

    except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,< ...

  3. 从0开始的Python学习016异常

    简介 当你的程序不能正常运行的时候,Python会在控制台打印一段提醒,告诉你一个错误,这个错误就是异常. 错误 我在控制台写了一段无效的代码,将print()的括号去掉,在执行这条语句的时候,系统提 ...

  4. python学习笔记——异常

    转自 http://www.cnblogs.com/rubylouvre/archive/2011/06/22/2086644.html Python内建异常体系结构 BaseException +- ...

  5. python笔记之异常

    异常 內建异常在exceptions模块内,使用dir函数列出模块的内容. 自定义异常类:继承基类Exception. 异常可以使用raise语句引发,可以使用try ... except ... e ...

  6. python raise和assert的区别

    python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...

  7. python raise

    当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常.一旦执行了raise语句,raise后面的语句将不能执行.   演示raise用法 try: s = None if s ...

  8. 13.python错误和异常

    一.错误和异常1.程序中的错误分为俩种:(1)语法错误:不按照语言的规则,必须在程序执行前就改正(2)逻辑错误2.异常就是程序运行时发生错误的信号,分为三部分(1)Traceback:异常追踪的信息( ...

  9. python大法好——异常

    ---恢复内容开始--- Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Pyth ...

随机推荐

  1. Spring boot Security 登陆安全配置

    实现的效果 访问url时,如果未登录时跳转到Login界面,要求用户登陆,如果登陆过返回请求的数据. 效果图 访问数据时,未登录返回login界面 登陆操作 登陆成功进入登出界面 登陆成功后再次访问数 ...

  2. kafka集群搭建(图文并用)

    将安装包上传服务器并解压 scp kafka_2.11-1.0.0.tgz username@{ip}:~/. mkdir /usr/local/kafka mv kafka_2.11-1.0.0.t ...

  3. C仿黑白棋版XO棋

    两位玩家轮流在棋盘上放置不同颜色的棋子,一位玩家使用黑子,另一位使用白子,棋盘是一个偶数正方形. 只能将一个棋子放在对手的棋子旁边,使对手在水平.垂直.对角线方向上的棋子变成自己的棋子,游戏结束时,棋 ...

  4. python编译exe后在windows2003上报错

    最近使用python写了一个分析nmon结果的小程序,用的是python3.8.win7环境,pyinstaller生成exe后,在win7上运行一切正常.拿到内网分享给团队成员,在windows20 ...

  5. 利用pgAgent创建定时任务

    使用Postgresql自带的pgAgent,可以很方便地创建定时执行任务.现在网上的资料都比较旧,Postgresql版本更新得比较快,导致网上的一些教程都不合用了,现在我写分享一下自己的经验. P ...

  6. Oracle Trace文件生成及查看

    2011-11-03 16:45:01 聪明的笨蛋 阅读数 39596更多 分类专栏: 6) Database   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...

  7. MAC 上抓取网页数据的工具有哪些?

    我希望能够从网页上, 比如气象局数据, 财经数据等等, 我看到官方提供的数据都比较混乱, 有的是一个php文件, 有的是一个文本, 有的干脆不提供数据, 我想问, Mac上, 用什么工具去抓数据, 以 ...

  8. MXNet/Gluon 中网络和参数的存取方式

    https://blog.csdn.net/caroline_wendy/article/details/80494120 Gluon是MXNet的高层封装,网络设计简单易用,与Keras类似.随着深 ...

  9. springboot+jwt完成登录认证

    本demo用于测试jwt,通过登录验证通过后,使用jwt生成token,然后在请求header中携带token完成访问用户列表信息. 准备工作: 1. 实体类SysUser.java package ...

  10. shell编程系列23--shell操作数据库实战之mysql命令参数详解

    shell编程系列23--shell操作数据库实战之mysql命令参数详解 mysql命令参数详解 -u 用户名 -p 用户密码 -h 服务器ip地址 -D 连接的数据库 -N 不输出列信息 -B 使 ...