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 ...
随机推荐
- 【软工实践】团队项目Snug-选题报告
组长博客链接 组长博客 NABCD分析引用 NEED 需求 根据我们的调查显示,大部分人都有着不规律的生活习惯,他们都希望有一款软件能够帮助他们,养成一个适合自己的较规律的生活习惯.我们的Snug正是 ...
- html5中section元素详解
html5中section元素详解 一.总结 一句话总结: section元素 用来定义文章中的章节(通常应该有标题和段落内容) section元素的作用就是给内容分段,给页面分区 1.section ...
- MiniDLNA常用操作
# MiniDLNA常用操作 ## 简介 多媒体共享服务器,类似于FTP,支持DLNA的客户端都可以看视频,听音乐,处于同一局域网就可以了 ## 管理 - 启动`systemctl start min ...
- 各类型变量所占字节数,sizeof()
与操作系统位数和编译器都有关. 可用sizeof()得到,当前主流编译器一般是32位或64位. 类型 16位 32位 64位 char 1 1 1 sho ...
- ubuntu18 更换屏幕分辨率
ubuntu18.04怎么修改屏幕分辨率 最近在自己的电脑中安装了ubuntu18.04系统,默认分辨率不对所以只好自己修改分辨率,但是在桌面右键并没找到设置分辨率的选项,那么我们应该在哪里设置分辨率 ...
- C++ STL排序问题
/* stl排序 */ #include <iostream> #include <map> #include <vector> #include <list ...
- sqllite connectionstring setting
https://www.connectionstrings.com/sqlite/ SQLite.NET Basic Data Source=c:\mydb.db;Version=3; Version ...
- 查询数据,从链接地址中爬取文章内容jsoup
查询数据,从链接地址中爬取文章内容 protected void doGet(HttpServletRequest request, HttpServletResponse response) thr ...
- realsense SDK编译 debug
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...
- 001——Typescript 介绍 、Typescript 安 装、Typescript 开发工具
一. Typescript 介绍 1. TypeScript 是由微软开发的一款开源的编程语言. 4. TypeScript 是 Javascript 的超级,遵循最新的 ES6.Es5 规范.Typ ...