[python]python的异常处理
异常处理:首先了解异常,程序出现逻辑错误或者用户输入不合法都会引发异常,而这些异常并不是致命的所以不会导致程序崩溃死掉。可以利用Python提供的异常处理机制在异常出现时及时捕获,并从内部自我消化。
接下来一个例子来说明异常:
file_name=input('请输入要打开的文件名:')
f=open(file_name,'r')
print('文件内容:')
for each_line in f:
print(each_line)
这是一个简单的读取文件内容的例子,如果用户输入正确的文件名,文件内容得以显示。如果用户输入一个不存在的文件名,那么代码就会出现异常。如下1.txt并不存在:
请输入要打开的文件名:1.txt
Traceback (most recent call last):
File "D:/python/p9_1.py", line 4, in <module>
f=open(file_name,'r')
FileNotFoundError: [Errno 2] No such file or directory: '1.txt'
上面的例子就抛出了一个FileNotFoundError异常。
以下是几种常见的异常类型:
1.AssertionError:断言语句失败
在分支和循环中当assert关键字后面的条件为假时,程序将停止并抛出AssertionError异常,一般在测试阶段用于在代码中置入检查点。
#AssertionError异常
my_list=['蔡徐坤']
assert len(my_list)>0 #长度是否大于0
print(my_list.pop()) #弹出
assert len(my_list)>0
Traceback (most recent call last):
蔡徐坤
File "D:/python/9_1_2.py", line 6, in <module>
assert len(my_list)>0
AssertionError
2.AttributeError:尝试访问未知的对象属性
#AttributeError异常
my_list=[]
my_list.wtf
Traceback (most recent call last):
File "D:/python/p9_1_3.py", line 4, in <module>
my_list.wtf
AttributeError: 'list' object has no attribute 'wtf'
3.IndexError:索引超出序列的范围
#IndexError
my_list=[1,2,3]
my_list[3]
Traceback (most recent call last):
File "D:/python/p9_1_3.py", line 8, in <module>
my_list[3]
IndexError: list index out of range
4.KeyError:字典中查找一个不存在的关键字
#KeyError
my_dict={"one":1,"two":2,"three":3}
print(my_dict["one"])
print(my_dict["four"])
1
Traceback (most recent call last):
File "D:/python/p9_1_3.py", line 13, in <module>
print(my_dict["four"])
KeyError: 'four'
5.NameError:尝试访问一个不存在的变量
#NameError
print(name)
Traceback (most recent call last):
File "D:/python/p9_1_3.py", line 16, in <module>
print(name)
NameError: name 'name' is not defined
6.OSError:操作系统产生的异常
如例子FileNotFoundError就是OSError的子类。
7.SynataxError:Python的语法错误
如下:任何错误的语法都会抛出改异常。
#SynataxError
my_dict=asdxc}
File "D:/python/p9_1_3.py", line 18
my_dict=asdxc}
^
SyntaxError: invalid syntax
8.TypeError:不同类型间的无效操作
有些类型不同不能进行相互计算,否则抛出该异常。
#TypeError
print(1+"")
Traceback (most recent call last):
File "D:/python/p9_1_3.py", line 22, in <module>
print(1+"1")
TypeError: unsupported operand type(s) for +: 'int' and 'str'
9.ZeroDivisionError:除数为0
#ZeroDivisionError
print(5/0)
Traceback (most recent call last):
File "D:/python/p9_1_3.py", line 25, in <module>
print(5/0)
ZeroDivisionError: division by zero
异常捕获可以使用try语句来实现,任何出现在try语句范围内的异常都会被及时捕获,有两种实现形式try-except和try-finally。
#try-except
try:
f=open("no.txt")
print(f.read())
f.close()
except OSError:
print("文件打开遇到错误!")
现在考虑以下这种情况(yes.txt是一个存在的文件):
try:
f=open("yes.txt")
print(f.read())
sum=1+""
f.close()
except:
print("出现错误!")
在sum=1+"1"出现异常,导致程序停止运行,而没有执行必要的f.close()操作需要保存文档,因此引入finally的概念,使必要操作最后得以执行。
try:
f=open("yes.txt")
print(f.read())
sum=1+""
except:
print("出现错误!")
finally:
f.close()
针对不同异常设置多个except:
try:
sum=1+''
f=open("no.txt")
print(f.read())
f.close()
except OSError as reason:
print("错误原因:"+str(reason))
except TypeError as reason:
print("错误原因:"+str(reason))
对多个异常统一处理:
try:
sum=1+''
f=open("no.txt")
print(f.read())
f.close()
except(OSError,TypeError) as reason:
print("错误出现!原因:"+str(reason))
| AttributeError | 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x |
| IOError | 输入/输出异常;基本上是无法打开文件 |
| ImportError | 无法引入模块或包;基本上是路径问题或名称错误 |
| IndentationError | 语法错误(的子类) ;代码没有正确对齐 |
| IndexError | 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] |
| KeyError | 试图访问字典里不存在的键 |
| KeyboardInterrupt | Ctrl+C被按下 |
| NameError | 使用一个还未被赋予对象的变量 |
| SyntaxError | Python代码非法,代码不能编译(个人认为这是语法错误,写错了) |
| TypeError | 传入对象类型与要求的不符合 |
| UnboundLocalError | 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它 |
| ValueError | 传入一个调用者不期望的值,即使值的类型是正确的 |
详细说明请参考:https://docs.python.org/3/library/exceptions.html#base-classes
[python]python的异常处理的更多相关文章
- Python 基础之 异常处理
python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理? 先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...
- Python基础---python中的异常处理
Python中的异常处理 一.什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) ...
- [Python Study Notes]异常处理
正则表达式 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理 断言(Assertions) python标准异常 ...
- Python系列之 - 异常处理
python提供的异常处理 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常 ...
- Python异常和异常处理
Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...
- python中的异常处理机制
python中的异常处理 1.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异 ...
- 第五章 python中的异常处理
每种编程语言都会有自己的异常处理机制,虽然各有特色,但基本上都差不多,那么python中强大异常处理机制是什么样的呢? 一.异常: python用异常对象来表示异常情况,遇到错误后,会引发异常.如果异 ...
- Python 入门 之 异常处理
Python 入门 之 异常处理 1.异常处理 (1)程序中的错误分为两种 <1> 语法错误 (这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) # 语法错误示范 ...
- python面向对象07/异常处理
python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...
随机推荐
- C++11——智能指针
1. 介绍 一般一个程序在内存中可以大体划分为三部分——静态内存(局部的static对象.类static数据成员以及所有定义在函数或者类之外的变量).栈内存(保存和定义在函数或者类内部的变量)和动态内 ...
- 关卡界面中个人信息随解锁关卡的移动(CocosCreator)
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 1.功能描述 在关卡很多的游戏里面,我们一般使用滑动来向玩家展示所有的关卡,为了清楚的让用户看到自己当前所在的关卡, ...
- 最简单流处理引擎——Kafka Streaming简介
Kafka在0.10.0.0版本以前的定位是分布式,分区化的,带备份机制的日志提交服务.而kafka在这之前也没有提供数据处理的顾服务.大家的流处理计算主要是还是依赖于Storm,Spark Stre ...
- Date与String之间相互转换
项目中经常用到,Date类型与String类型的转换,所以写个工具类 直接贴代码: package com.elite.isun.utils; import java.text.ParseExcept ...
- windows服务autofac注入quartz任务
一.nuget下载相关类库引用 install-package Quartz install-package Autofac install-package Autofac.Configuration ...
- codeforces 828 C. String Reconstruction(思维+优先队列)
题目链接:http://codeforces.com/contest/828/problem/C 题解:有点意思的题目,可用优先队列解决一下具体看代码理解.或者用并查集或者用线段树都行. #inclu ...
- 树形动态规划 fjutoj-2131 第四集,聚集城市
第四集,聚集城市 TimeLimit:1000MS MemoryLimit:128MB 64-bit integer IO format:%lld Problem Description 在小A ...
- HDU - 3966 树链刨分
题目传送门 操作就是询问某个点的值, 然后就是对一条路径上的值全部修改. 最基本的树刨题目了. 树刨的思想: 1. 对于每个点找到他的重儿子. void dfs1(int o, int u){ sz[ ...
- Kubernetes master无法加入etcd 集群解决方法
背景:一台master磁盘爆了导致k8s服务故障,重启之后死活kubelet起不来,于是老哥就想把它给reset掉重新join,接着出现如下报错提示是说etcd集群健康检查未通过: error exe ...
- asp.net core 使用 signalR(一)
asp.net core 使用 signalR(一) Intro SignalR 是什么? ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程. 实 ...