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学习笔记之异常相关推荐

  1. Python学习笔记Task07(异常)

    Python学习笔记Task07(异常) 2.try-except语句 try 语句按照如下方式工作:l 首先,执行try子句(在关键字try和关键字except之间的语句l 如果没有异常发生,忽略e ...

  2. python基本语法语句-python学习笔记:基本语法

    原标题:python学习笔记:基本语法 缩进:必须使用4个空格来表示每级缩进,支持Tab字符 if语句,经常与else, elif(相当于else if) 配合使用. for语句,迭代器,依次处理迭代 ...

  3. Python学习笔记:Day 3编写ORM

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. Python学习笔记之类型判断,异常处理,终止程序操作小结

    Python学习笔记之类型判断,异常处理,终止程序操作小结 运行结果: 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发. 爬虫.数据分析.数据可视化.机 ...

  5. python学习笔记4(对象/引用;多范式; 上下文管理器)

    python学习笔记4(对象/引用:多范式; 上下文管理器) ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是 ...

  6. python 学习笔记 (核心)

    python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[ ...

  7. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

  8. Python学习笔记(十三):异常处理机制

    Python学习笔记(十三):异常处理机制 关于Python的异常处理机制 Python学习笔记(十三):异常处理机制 一.异常处理机制 常见异常类型 二.异常处理 try...except 异常类的 ...

  9. 前阿里大佬干货分享,0基础小白,转行必看Python学习笔记(七)

    Python学习笔记7 异常处理 包和模块 包和模块的一般操作 导入操作的本质 模块检索的路径 导入模块的场景 第三方包和模块的安装 异常处理 系统内部一开始已经内置了一些特定的错误场景,当我们触发了 ...

最新文章

  1. mysql 优化详解_MySQL 优化详解
  2. python实现ocr识别文字
  3. C#interface定义及使用浅析
  4. python基础——字典
  5. apache ii评分和死亡率_高大上的风险分层系统:APACHE评分到底是啥?
  6. BZOJ3298[USACO 2011Open]cow checkers——威佐夫博弈
  7. 只做macd二次金叉_【教你一招】MACD低位二次金叉
  8. CRecordset类
  9. 笔记 英语二 考研先导课 0126
  10. 经典面试题:有序矩阵的快速查找
  11. vue的一些坑(第二天)
  12. 有什么软件可以测试游戏视频数据,免费录制游戏视频软件有哪些?看完你就知道了...
  13. 从腾讯文化VS阿里文化看滴滴和UBER的并购事件
  14. 笔记本实现共享wifi上网
  15. linux系统服务器日志,linux系统日志及日志服务器
  16. linux centos 恢复 还原 备份 Snapper 快照说明
  17. MySQL锁与事务知识结构脑图
  18. 远程主机强迫关闭一个现有连接 安卓开发 完美解决版
  19. web页面之响应式布局
  20. android su 程序,android 开发 制作自己的su

热门文章

  1. php for linux配置文件,linux配置php运行环境
  2. 曲线行驶最后什么时候回正_曲线行驶总压线?老教练给你支支招,看完觉得太简单了……...
  3. 教职工使用计算机管理制度,【学校管理规章制度】教师笔记本电脑使用与管理制度...
  4. linux标准IO实验,Linux系统编程(第三篇) 标准IO.pdf
  5. PAT_B_1025_Java(22分)
  6. 如何让html重点表单自动对齐,html – 如何对齐多个表单元素?
  7. mysql inner join where_mysql中,inner join和where的结合问题
  8. Cache超清晰逻辑详解(cache的三种映射)
  9. python字母大小写排序_Python中sorted()排序与字母大小写的问题
  10. POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)