python下的异常处理
一、什么是异常
程序运行过程中错误发生的信号。(如果运行时产生的异常,程序不处理就会被抛出,随之会造成程序终止)
二、异常的种类
首先,异常主要分为语法错误、逻辑错误两种类型
语法错误会在程序还没有执行前就会被检测出,所以针对语法错误,我们就要在程序执行前解决掉。
# 语法错误示范:
if def foo
pass class Bar:
pass
逻辑错误只有在程序执行过程中会被检测,不处理会就会被抛出,导致程序终止。
# 逻辑错误示范:
l=[11,22,33]
l[4]
xxx
d = {'a': 1, 'b': 2}
d['z']
我们常见的逻辑错误类型有哪些??
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError 常见的语法错误
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
三、异常处理
既然有异常发生,那我们就要设法捕捉异常,不能因为异常而导致程序的终止。
如果我们能预知错误的发生条件时,那我们就应该用if判断去处理,在异常发生之前先进行预防。
num = input('请输入数字>>:').strip() if num.isdigit(): # 我们知道只有在num为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
num = int(num) num += 1
print(num)
如果我们无法预知错误发生的条件时,则需要用到try...except:在错误发生之后进行处理。
try:
print('===1')
l = [1, 2, 3]
l[11]
print('====3')
d = {'a': 1, 'b': 2}
d['z']
print('===5')
except IndexError:
print('没有执行"l[11]"下面的代码')
except KeyError:
print('KeyError') else:
print('放在最后执行,前提是try内的代码没有异常发生,才会执行else') finally:
print('finally放在最后执行,无论try内的代码有没有异常发生都会执行')
print('你好啊') # ===1
# 没有执行"l[11]"下面的代码
# finally放在最后执行,无论try内的代码有没有异常发生都会执行
# 你好啊
当我们不知道会发生的错误类型时,就需要用到万能异常捕获!!
try:
code1
code2
code3
code4 except Exception as e:
print(e)
class EgonException(BaseException):
def __init__(self,msg):
self.msg=msg def __str__(self):
return self.msg try:
raise EgonException('类型错误')
except EgonException as e:
print(e)
自定义异常类
主动产生异常:raise的用法
# raise 一般用于自定义程序的控制逻辑或系统资源被无限占用时
class People:
def __init__(self,name,age):
self.__name = name
self.__age =age def set_inter(self,name,age):
# 控制用户的修改格式
if not isinstance(name,str):
raise TypeError('name must be str')
if not isinstance(age,int):
raise TypeError('age must be int')
self.__name = name
self.__age = age obj = People('jack',12)
obj.set_inter('peter',25)
print(obj.__dict__) # {'_People__name': 'peter', '_People__age': 25}
python下的异常处理的更多相关文章
- python下异常处理
1.python下异常如何处理: #encoding=utf-8 """ python遇到异常,程序直接运行 try: "判断有可能抛出异常的代码" ...
- 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 入门 之 异常处理 1.异常处理 (1)程序中的错误分为两种 <1> 语法错误 (这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) # 语法错误示范 ...
- python面向对象07/异常处理
python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...
随机推荐
- Sql Server2008如何让外网访问自己的数据库
1.打开 Sql Server配置管理器 2.修改Sql Server网络配置,将Tcp/IP协议修改为“已启用” 3.重启Sql Server服务即可(如果不知道怎么重启Sql Server服务,重 ...
- Day7 Numerical simulation of optical wave propagation之通过随机介质(如大气湍流)的传播(三)
三 执行湍流仿真 基本参数设置: 光场条件:波长wvl,源平面的光场U 传播几何结构:观察面孔径尺寸D2,传播距离Dz 湍流条件:大气折射率结构常数Cn2 1. 准备工作 确定传播几何结构 (程序: ...
- 相片后期处理,PS调出温暖的逆光美女
原图: 效果图: 后面就是开PS导图: 说明下,因为拍的时候大概知道自己的方法会让照片变暖,现场光线又很暖,所以色温要调低一些,这边是4100,其他不用变,直接转JPG调色了 1:第一步是加第一个曲线 ...
- ssh远程 和 上传/下载工具
常用的ssh远程工具有: putty : 软件体积小,开源免费. xshell : 功能强大,亦有免费试用版本 SecureCRT : 功能强大 ftp : 该软件用于上传下载文件 通过ssh ...
- 利用Python中SocketServer 实现客户端与服务器间非阻塞通信
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信 版权声明 本文转自:http://blog.csdn.net/cnmilan/article/details/9664823 ...
- set 数据类型
list => 允许重复的集合,可修改 tuple => 允许重复的集合,不可修改 dict set => 不允许重复的集合 .set 不允许重复的列表 1.创建 s = set() ...
- monkey事件简介
操作事件简介 Monkey所执行的随机事件流中包含11大事件,分别是触摸事件.手势事件.二指缩放事件.轨迹事件.屏幕旋转事件.基本导航事件.主要导航事件.系统按键事件.启动Activity事件.键盘事 ...
- sgu438-The_Glorious_Karlutka_River
Description SGU似乎死了... 题目搬到了Codeforces... Problem - 99999438 - Codeforces Solution 动态最大流. 考虑如果不求时间, ...
- JarvisOJ Misc shell流量分析
分析一下shell流量,得到flag 看着一大推的数据记录头都大了,并没有什么wireshark的使用经验,开始胡搞 首先用notepad++打开,搜索flag字样找到了一个类似于python脚本的东 ...
- Hive 口袋手册
2019-04-01 关键字:Hive 学习总结.Hive 基础 . Hive 进阶 .Hive 调优 . Hive 入门手册.Hive PDF 下载 本篇文章系本人就目前所掌握的知识对 Apache ...