Python-24 异常处理

这篇博客总结了Python的三种异常处理方式:1) 使用try-except处理异常;2) 添加finally块确保某些代码无论是否发生异常都会执行;3) 使用raise关键字主动抛出异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python标准异常总结

AssertionError断言语句(assert)失败
AttributeError尝试访问未知对象属性
EOFError用户输入文件末尾标志EOF(Ctrl+d)
FloatingPointError浮点计算错误
GeneratorExitgenerator.close()方法被被调用的时候
ImportError导入模块失败的时候
IndexError索引超出序列的范围
KeyError字典中查找一个不存在的关键字
KeyboardInterrupt用户输入中断键(Ctrl+c)
MemoryError内存溢出(可通过删除对象释放内存)
NameError尝试访问一个不存在的变量
NotImplementedError尚未实现的方法
OSError操作系统出现异常(例如打开一个不存在的文件)
OverflowError数值运算超出最大限制
ReferenceError弱引用(weak reference)试图访问一个已经被垃圾回收
机制回收了的对象
RuntimeError一般运行时错误
StopIteration迭代器没有更多的值
SyntaxErrorPython的语法错误
IndentationError索引错误
TabErrorTab和空格混合使用
SystemErrorPython编译器系统错误
SystemExitPython编译器进程被关闭
TypeError不同类型间的无效操作
UnboundLocalError访问一个未初始化的本地变量(NameError的子类)
UnicodeErrorUnicode相关的错误(ValueError的子类)
UnicodeEncodeErrorUnicode编码时的错误(UnicodeError的子类)
UnicodeDecodeErrorUnicode解码时的错误(UnicodeError的子类)
UnicodeTranslateErrorUnicode转换时的错误(UnicodeError的子类)
ValueError传入无效参数
ZeroDivisionError除数为零


异常检测和处理


第一种

try:

检测范围

except Exception [as reason]:

出现异常(Exception)后的处理代码


try:
    f = open('E:\\Tt.txt')
    print(f.read())
    f.close()
except OSError:
    print('文件出错了T_T')
>>> ================================ RESTART ================================
>>> 
文件出错了T_T
>>> 


try:
    f = open('E:\\Tt.txt')
    print(f.read())
    f.close()
except OSError as reason:
    print('文件出错了T_T\n错误的原因:'+str(reason))
>>> 
文件出错了T_T
错误的原因:[Errno 2] No such file or directory: 'E:\\Tt.txt'
>>> 

try:
    sum = 1 + '1'
    f = open('E:\\Tt.txt')
    print(f.read())
    f.close()
except OSError as reason:
    print('文件出错了T_T\n错误的原因:'+str(reason))
except TypeError as reason:
    print('类型出错了T_T\n错误的原因:'+str(reason))
>>> 
类型出错了T_T
错误的原因:unsupported operand type(s) for +: 'int' and 'str'
>>> 


把多个异常合为一个元组

try:
    #sum = 1 + '1'
    f = open('E:\\Tt.txt')
    print(f.read())
    f.close()
except (OSError,TypeError) as reason:
    print('出错了T_T\n错误的原因:'+str(reason))


第二种

try:

检测范围

except Exception [as reason]:

出现异常(Exception)后的处理代码

finally:

无论如何都会执行的代码



try:
    f = open('E:\\Tt.txt','w')
    print(f.write('我存在!'))
    sum = 1 + '1'
except (OSError,TypeError) as reason:
    print('出错了T_T\n错误的原因:'+str(reason))
finally:
    f.close()
>>> 
4
出错了T_T
错误的原因:unsupported operand type(s) for +: 'int' and 'str'
>>> 

程序报错了,但数据还是保存在了文件中。




第三种

关键字:raise

>>> raise
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    raise
RuntimeError: No active exception to reraise
>>> 


一般会在raise后面加上异常的名字

>>> 1/0
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    1/0
ZeroDivisionError: division by zero
>>> raise ZeroDivisionError('除数不能为零!')
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    raise ZeroDivisionError('除数不能为零!')
ZeroDivisionError: 除数不能为零!
>>> 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值