Python学习笔记之异常
Python用异常对象来表示异常情况,如果异常对象未被处理或捕捉,程序就会回溯(traceback)中止执行。
异常可以在出错时自动引发,也可以主动引发。
异常被引发后如果不被处理就会传播至程序调用的地方,直到主程序(全局作用域),如果主程序仍然没有异常处理,程序会带着栈跟踪终止。
raise:引发异常
>>> raise Exception Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>raise Exception Exception
>>> raise Exception("error!!!")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
raise Exception("error!!!")
Exception: error!!!
常见内建异常类:
类名 | 描述 |
Exception | 所有异常的基类 |
AttributeError | 特性引用或赋值失败时引发 |
IOError | 试图打开不存在文件(包括其他情况)时引发 |
IndexError | 在使用序列中不存在的索引时引发 |
KeyError | 使用映射中不存在的键引发 |
NameError | 找不到名字(变量)时引发 |
SyntaxError | 在代码为错误形式时引发 |
TypeError | 在内建操作或者函数应用于错误类型的对象引发 |
ValueError | 在内建操作或者函数应用于正确的对象,但是该对象使用不合适的值引发 |
ZeroDivision | 在除法或者模除操作的第二个参数为0时引发 |
自定义异常类:继承自Exception
class DefException(Exception):pass
捕捉异常:使用try/except语句实现>>> try:
x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except ZeroDivisionError:print("Error")The first num:5 The second num:0 Error
>>> try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except ZeroDivisionError:print("Error") except ValueError:print("TypeError")The first num:5 The second num:o TypeError
用一个块捕捉多个异常:
>>> try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except (ZeroDivisionError,ValueError):print("Error")The first num:5 The second num:0 Error
捕捉对象:
>>> try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except (ZeroDivisionError,ValueError) as e:print(e)The first num:5 The second num:0 division by zero
捕捉所有异常:
try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except:print("some errors") The first num:5 The second num: some errors
这种方式会捕捉用户中止执行的企图,会隐藏所有程序员未想到并且未做好准备的错误。
对于异常情况进行处理:
#在输入不合法时循环,直到合法值出现退出循环 while True:try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y)except:print("Error")else:break#运行结果 The first num:5 The second num:0 Error The first num:6 The second num:3 2.0
finally子句:用在可能的异常后进行清理,不管是否有异常都要执行。在同一个try语句中,不可以和except使用。
x = None try:x = 1/0 finally:print("cleaning")del x#结果 cleaning Traceback (most recent call last):File "input.py", line 4, in <module>x = 1/0 ZeroDivisionError: division by zero***Repl Closed***
可以在一条语句中组合使用try,except,else,finally
try:x = 1/0else:print("done") finally:print("cleaning")#运行结果 cleaning***Repl Closed***
转载于:https://www.cnblogs.com/HJhj/p/7423454.html
Python学习笔记之异常相关推荐
- Python学习笔记Task07(异常)
Python学习笔记Task07(异常) 2.try-except语句 try 语句按照如下方式工作:l 首先,执行try子句(在关键字try和关键字except之间的语句l 如果没有异常发生,忽略e ...
- python基本语法语句-python学习笔记:基本语法
原标题:python学习笔记:基本语法 缩进:必须使用4个空格来表示每级缩进,支持Tab字符 if语句,经常与else, elif(相当于else if) 配合使用. for语句,迭代器,依次处理迭代 ...
- Python学习笔记:Day 3编写ORM
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记之类型判断,异常处理,终止程序操作小结
Python学习笔记之类型判断,异常处理,终止程序操作小结 运行结果: 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发. 爬虫.数据分析.数据可视化.机 ...
- python学习笔记4(对象/引用;多范式; 上下文管理器)
python学习笔记4(对象/引用:多范式; 上下文管理器) ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是 ...
- python 学习笔记 (核心)
python 学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*- //字符编码 不区分单引号和双引号,x='hello',x[ ...
- Python学习笔记三之编程练习:循环、迭代器与函数
Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...
- Python学习笔记(十三):异常处理机制
Python学习笔记(十三):异常处理机制 关于Python的异常处理机制 Python学习笔记(十三):异常处理机制 一.异常处理机制 常见异常类型 二.异常处理 try...except 异常类的 ...
- 前阿里大佬干货分享,0基础小白,转行必看Python学习笔记(七)
Python学习笔记7 异常处理 包和模块 包和模块的一般操作 导入操作的本质 模块检索的路径 导入模块的场景 第三方包和模块的安装 异常处理 系统内部一开始已经内置了一些特定的错误场景,当我们触发了 ...
最新文章
- mysql 优化详解_MySQL 优化详解
- python实现ocr识别文字
- C#interface定义及使用浅析
- python基础——字典
- apache ii评分和死亡率_高大上的风险分层系统:APACHE评分到底是啥?
- BZOJ3298[USACO 2011Open]cow checkers——威佐夫博弈
- 只做macd二次金叉_【教你一招】MACD低位二次金叉
- CRecordset类
- 笔记 英语二 考研先导课 0126
- 经典面试题:有序矩阵的快速查找
- vue的一些坑(第二天)
- 有什么软件可以测试游戏视频数据,免费录制游戏视频软件有哪些?看完你就知道了...
- 从腾讯文化VS阿里文化看滴滴和UBER的并购事件
- 笔记本实现共享wifi上网
- linux系统服务器日志,linux系统日志及日志服务器
- linux centos 恢复 还原 备份 Snapper 快照说明
- MySQL锁与事务知识结构脑图
- 远程主机强迫关闭一个现有连接 安卓开发 完美解决版
- web页面之响应式布局
- android su 程序,android 开发 制作自己的su
热门文章
- php for linux配置文件,linux配置php运行环境
- 曲线行驶最后什么时候回正_曲线行驶总压线?老教练给你支支招,看完觉得太简单了……...
- 教职工使用计算机管理制度,【学校管理规章制度】教师笔记本电脑使用与管理制度...
- linux标准IO实验,Linux系统编程(第三篇) 标准IO.pdf
- PAT_B_1025_Java(22分)
- 如何让html重点表单自动对齐,html – 如何对齐多个表单元素?
- mysql inner join where_mysql中,inner join和where的结合问题
- Cache超清晰逻辑详解(cache的三种映射)
- python字母大小写排序_Python中sorted()排序与字母大小写的问题
- POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)