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异常,把异常详细信息打印出来。
Python——raise引发异常的更多相关文章
- python自定义异常,使用raise引发异常
1.自定义异常类,自定义的异常类必须是Exception或者Error的子类! 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 class Illega ...
- python——异常except语句用法与引发异常
except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,< ...
- 从0开始的Python学习016异常
简介 当你的程序不能正常运行的时候,Python会在控制台打印一段提醒,告诉你一个错误,这个错误就是异常. 错误 我在控制台写了一段无效的代码,将print()的括号去掉,在执行这条语句的时候,系统提 ...
- python学习笔记——异常
转自 http://www.cnblogs.com/rubylouvre/archive/2011/06/22/2086644.html Python内建异常体系结构 BaseException +- ...
- python笔记之异常
异常 內建异常在exceptions模块内,使用dir函数列出模块的内容. 自定义异常类:继承基类Exception. 异常可以使用raise语句引发,可以使用try ... except ... e ...
- python raise和assert的区别
python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...
- python raise
当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. 演示raise用法 try: s = None if s ...
- 13.python错误和异常
一.错误和异常1.程序中的错误分为俩种:(1)语法错误:不按照语言的规则,必须在程序执行前就改正(2)逻辑错误2.异常就是程序运行时发生错误的信号,分为三部分(1)Traceback:异常追踪的信息( ...
- python大法好——异常
---恢复内容开始--- Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Pyth ...
随机推荐
- ciscn2019华北赛区半决赛day1_web1题解
感谢buuoj的大佬们搭建的复现环境.作为一位CTF的初学者,我会把每个题目的writeup都写的尽量详细,希望能帮到后面的初学者. http://web42.buuoj.cn 文章会不定时继续完善, ...
- Qt *.pro工程文件 详解
先介绍一下QT中关于项目的相关介绍 app - 建立一个应用程序的makefile.这是默认值,所以如果模板没有被指定,这个将被使用. lib - 建立一个库的makefile. vcapp - 建立 ...
- 今天闲来无事给我这老伙计A4L换个机油
今天闲来无事给我这老伙计A4L换个机油 今天天气不错正好心血来潮给我的老伙计做个小保健.跟我这么久了也不能亏待是吧,也很久没来论坛了顺便冒个泡给我们版主晶晶交个作业要不然又要揍我了. ...
- java.lang.ClassNotFoundException: org.apache.jsp.error_jsp
缺少jar包 第一个:standard-1.1.2.jar 第二个:jstl-1.2.jar
- MQTT基础概念介绍
https://blog.csdn.net/pipinet123/article/details/60866901 源博客地址:http://blog.csdn.net/pipinet123 MQTT ...
- CentOS 安装抓包工具wireshark-tshark抓包工具
原文出处:razeen -> https://razeen.me/post/how-to-install-tshark-on-centos.html 准备在服务器上用tshark抓包,分析一下数 ...
- centos下安装ffmpeg加上fdk-aac的支持
本文参考自:https://blog.csdn.net/jklinux/article/details/72367829 安装包可以从这里下载https://download.csdn.net/dow ...
- PDF生成类库
from:https://blog.csdn.net/plean/article/details/8097015 最近忙了两个星期的任务了 iTextSharp.dll是个开源的用于生成pdf ...
- 003——angular 组件 以及组件里面的模板
创建组件: ng g component components/news 一.创建 angualr 组件................................................ ...
- linux配置docker报错:ImportError: No module named yum
如题,安装docker后配置仓库报错: [root@centos ~]# yum-config-manager --add-repo https://download.docker.com/linux ...