十九. Python基础(19)--异常
十九. Python基础(19)--异常
1 ● 捕获异常
if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try: <...............> #可能得到异常的语句 except <.......>: #捕获是哪种异常 <...............> #出现异常的处理方法 except <.......>: #捕获是哪种异常 <...............> #出现异常的处理方法 else: < ............... > # 没有出现异常的处理方法 finally: < ............... > # 最后一定会执行的语句 |
try: #lst = [2,4,6] #print(lst.index(5)) print("##########") # 如果上面的语句触发异常, 这一句不再执行, 下面的语句也都不会执行, 但是finally语句块的语句会执行 print(sum(1,2,3)) print("##########") f =open('file.txt') # 如果上面的语句出错, 这一句就不会执行了, finally里面的语句也会因此提示出错. print(f.read()) # 程序出现异常后, 会按照下面的顺序依次匹配, 最先匹配到哪个异常就捕获哪个异常. # 在我们不能完全明确地知道这个错误到底是发生了什么的时候, 就用as 变量名, 将变量中储存的错误信息打印出来. except ValueError as msg: # 或者写成except ValueError, msg print("5不在列表中:", msg) # 5不在列表中: 5 is not in list # 如果写成: except ValueError: 那么就不会打印python内部的定义的错误提示. except Exception as e: print("出现某种异常:", e) # 出现某种异常: sum expected at most 2 arguments, got 3 # Exception是万能异常类,对于可预见的异常错误, 我们最好用已知的异常类型. 否则才用万能异常类. # 上面的print(sum(1, 2, 3))这一句实际上触发了TypeError异常, 所以最好把Exception改为TypeError else: # try代码块中没有捕获到异常的时候才会执行 print("程序没有出现异常!") finally: # finally代码块中的代码一定会执行; 主要做清理的工作, 把之前的打开的链接, 文件等关闭掉. f.close() # 如果连用else和finally, else要写在finally之前. |
2 ● 自定义异常 & 类抛出异常
raise语句(比if 语句更暴力, 捕获异常后, 直接停止程序) |
class MyError(BaseException): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg file_name = input("pls input file name:") if file_name == 'hello': raise MyError('file name can\'t be "hello"!') ''' pls input file name:hello Traceback (most recent call last): File "D:/python_projects/s7code/day21/test_day21.py", line 172, in <module> raise MyError('file name can\'t be "hello"!') __main__.MyError: file name can't be "hello"! ''' # 程序要求用户输入一个文件名, # 如果用户输入的文件名是hello, 那么抛出一个NameError的异常 # 用户输入hello 和MyError异常之间没有任何必然联系 # 我们只是人为的通过raise来这样定义 # 我们当然也可以定义成TypeError或其它名称, 但我定义的异常类型必须是python提供的或派生的 |
3 ● assert语句
1、assert语句用来声明某个条件是真的。 2、如果你非常确信某个条件为真(比如数学公理之类的),而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。 3、当assert语句失败的时候,会引发一AssertionError。 |
def KelvinToCelsius(t): assert (t >= 0), "Colder than absolute zero!" return t - 273 print(KelvinToCelsius(1)) # -272 print(KelvinToCelsius(-5)) # AssertionError: Colder than absolute zero! # 注意, assert语句可以写成assert t>= 0,"Colder than absolute zero!", # 但不能写成assert((Temperature >= 0),"Colder than absolute zero!") # 因为在python2,3中,assert都是一个语句(statement) # 不像print在python3中变成了一个函数。 |
4 ● except:pass
except: pass # 如果在循环体内, 这个pass要写成pass # 程序捕获到异常时, 直接退出程序, 这是个不好的编程习惯, 但要了解这种写法. |
转载于:https://www.cnblogs.com/ArrozZhu/p/8393748.html
十九. Python基础(19)--异常相关推荐
- [Python从零到壹] 三十九.图像处理基础篇之图像几何变换(镜像仿射透视)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 九. Python基础(9)--命名空间, 作用域
九. Python基础(9)--命名空间, 作用域 1 ● !a 与 not a 注意, C/C++可以用if !a表示if a == 0, 但是Python中只能用if not a来表示同样的意义. ...
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
- Python基础(10) - 异常
Python 异常:程序出现了错误而在正常控制流以外采取的行为 Python中常见的异常: 1. NameError:尝试访问一个未声明的变量 >>> something Trace ...
- Python基础19(random模块)
random模块(随机数模块) 导入random模块方法 import random random模块使用方法 1 >>> import random 2 #随机小数 3 >& ...
- python基础教程----异常
1.什么是异常 Python用异常对象来表示异常,遇到错误后,会引发异常,如果异常对象并未被处理或捕捉,程序会用所谓的回溯终止执行. 2.按自己的方式出错 如何引发异常,甚至创建自己的异常类型 2.1 ...
- [Python图像处理] 三十九.Python图像分类万字详解(贝叶斯图像分类、KNN图像分类、DNN图像分类)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- python基础19 -------面向对象终结篇(介绍python对象中各种内置命令)
一.isinstance()和issubclass()命令 1.isinstance(对象,类型) 用来判定该对象是不是此类型或者说是该对象是不是此类的对象,返回结果为True和False,如图所示. ...
最新文章
- 紫色回归线:雅虎中国的运筹学
- ubuntu16.04 cuda9.0 cudnn Tensorflow GPU 1.10.0
- cookie的路径和域
- SVN钩子--hook
- linux安装12c oem,OEM12C(12.1.0.5)安装插件监控mysql(linux)
- 搭建认证服务器 - Spring Security Oauth2.0 集成 Jwt 之 【授权码认证流程】 总结
- rome rss_RSS阅读器使用:ROME,Spring MVC,嵌入式Jetty
- Hadoop—如何查看HDFS默认的ns命名空间和所有命名空间列表
- 史上最全的CSS hack方式一览(鉴)
- C++编程积累——C++实现十进制与十六进制之间的互相转换
- js方法的使用(z)
- 致敬那些用键盘改变世界的劳动者
- Apache-Shiro-会话管理
- vue项目部署的一些配置和流程
- 华为hcip认证考试题库有哪些内容?华为hcip认证考试题库试题举例
- 台式电脑主板插线步骤图_图解电脑主机电源线接法图解
- PAZU -- 4Fang WEB 打印控件
- 例举计算机网络连接的主要对象,《计算机网络技术基础教程》课后习题答案_刘四清版...
- 区块链签章 + 云签约 让合同的法律效力无懈可击
- java 枚举 静态_Java 静态内部类和枚举(银联支付)
热门文章
- 致技术创业的朋友:其实销售很简单(Z)
- MSP430F5XXX中的ADC12使用
- C#使用HttpClient进行http操作
- 大批工厂提前20天放假,而大家却都在玩金融
- 《北妹》:中国七零后作家的一次火山喷发(答记者问)
- 就是想让你无法无动于衷:观瑞士的“行为艺术”
- Visual Basic团队透露将为VB添加迭代器
- android webview 禁止放大缩小,WebView无法放大缩小解决方案
- 线性共轭梯度法python_python实现的共轭梯度法
- 大唐发电厂计算机考试题,全国计算机等级考试上机考试与题库解析:一级B