Python学习笔记(五)——异常处理
Python 异常总结
异常名称 | 解释 |
---|---|
AssertionError | 断言语句(assert)失败:当assert关键字后边的条件为假时,程序将抛出该异常,一般用于在代码中置入检查点 |
OSError | 操作系统产生的异常(例如打开一个不存在的文件) |
OverflowError | 数值运算超出最大限制 |
ReferenceError | 弱引用(weak reference)试图访问一个已经被垃圾回收几只回收了的对象 |
RuntimeError | 一般的运行时错误 |
StopIteration | 迭代器没有更多的值 |
SyntaxError | Python的语法错误 |
IndentationError | 缩进错误 |
TabError | Tab和空格混合使用 |
SystemError | Python编译器系统错误 |
TypeError | 不同类型间的无效操作 |
UnboundLocalError | 访问一个未初始化的本地变量(NameError的子类) |
UnicodeError | Unicode相关的错误(ValueError的子类) |
UnicodeEncodeError | Unicode编码时的错误(UnicodeError的子类) |
UnicodeDecodeError | Unicode解码时的错误(UnicodeError的子类) |
UnicodeTranslateError | Unicode转换时的错误(UnicodeError的子类) |
ValueError | 传入无效的参数 |
ZeroDivisionError | 除数为零 |
Python的异常处理
try语句
try: sum = 1 + '1' f = open('文件.txt') print(f.read()) f.close() #异常的统一处理 except (OSError ,TypeError): print('出错了')
try -finally 语句
try: #检测范围 except Exception[as reason]: # 出现异常(Exception)后的处理代码 finally: #无论如何都会被执行的代码
raise语句
raise ZeroDivisionError('除数为零') Traceback (most recent call last): File "", line 1, in raise ZeroDivisionError('除数为零') ZeroDivisionError: 除数为零
else语句
在Python中,else语句不仅能够和if搭配,也可以和循环语句for、while搭配使用,else也可以进行异常处理
else与循环语句搭配使用时,当循环正常结束时不会进行else语句中的内容,只有遇到break语句,则else不执行
try:
print(int('abc'))
except ValueError as reason:
print('出错了' + str(reason))
else:
print('没有异常')
出错了invalid literal for int() with base 10: 'abc'
try: print(int('123')) except ValueError as reason: print('出错了' + str(reason)) else: print('没有异常') >>> 123 没有异常
with语句
try:
with open('data.txt','w') as f:
for each_line in f:
print(each_line)
except OSError as reason:
print('出错啦:' + str(reason))
使用with语句,避免打开文件没有关闭的情况
try: f = open('data.txt','w') for each_line in f: print(each_line) except OSError as reason: print('出错啦:' + str(reason)) finally: f.close()
with的详细说明
转载于//www.cnblogs.com/lelezuimei/p/11289071.html
还没有评论,来说两句吧...