异常
原文链接:转载自
- 常见异常类型
AttributeError #试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError #输入/输出异常(基本上是无法打开文件)
ImportError #无法引入模块或包(基本上是路径问题或名称错误)
IndentationError #语法错误(的子类)(代码没有正确对齐)
IndexError #下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError #试图访问字典里不存在的键
KeyboardInterrupt #Ctrl+C被按下,程序被打断
NameError #使用一个还未被赋予对象的变量
SyntaxError Python3 #代码非法,代码不能编译(语法错误/写错了)
TypeError #传入对象类型与要求的不符合
UnboundLocalError #试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError #传入一个调用者不期望的值,即使值的类型是正确的
- Python中的异常处理机制
在Python当中,若一个程序在运行的时候出错,Python解释器会自动的在出错的地方生成一个异常对象,而后Python解释器会自动的在出错地方的附近寻找有没有对这个异常对象处理的代码,所谓异常处理代码就是try……except语句,如果没有,Python解释器会自动的将这个异常对象抛给其调用函数,就这样层层抛出,如果在main当中也没有对这个异常对象处理的代码,Python解释器(实际上是操作系统)最后会做一个简单粗暴的处理,将整个程序给终止掉,并将错误的信息在显示屏上输出。 - Python中的异常处理方法
try:
可能出现异常的代码块
(try语句检测到异常后后面将不再检测)
except Exception as e:
print("异常的类型是:%s"%type(e))
print("异常的内容是:%s"%e)
else:
print('如果代码块不抛出异常会执行此行代码!')
finally:
print('不管代码块是否抛出异常都会执行此行代码!')
- 自己定义异常
raise ZeroDivisionError('除数不能为零的异常')
- 异常使用场景
异常并不一定使程序的逻辑更加清晰,有的时候会导致程序的逻辑更加混乱,常用于服务器端无法预知客户端的错误场景 ,所以能用if就用if 。
else 语句
- 正常使用(要么怎么样,要么不怎么样)
- 和while搭配(干完了怎样,干不完就别想怎样)
while xxx:
xxx
break
else:
xxx #while中所有的都只执行一遍了,还不可以break,就去到else
- try…catch(没有问题,那就干吧)
with 语句
with语句也可以进行预定义的清理操作,无论资源在使用过程中是否发现了异常,都会执行释放资源的操作。
格式:with 上下文表达式 【as 对象】
with open(r'c:\test.txt', 'r') as f:
data = f.read()
with后面接的对象返回的结果赋值给f。此例当中open函数返回的文件对象赋值给了f.with会自已获取上下文件的异常信息。
GUI:
EachGui
·待补充