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()
                    
                
                
            
        
浙公网安备 33010602011771号