pthhon异常语句、默认处理和异常捕获

2023-12-19 23:35:35

1 pthhon异常语句、默认处理和异常捕获

1.1 Python异常处理语句

Python异常可以由代码手动触发和捕获,也可以根据错误自动触发。

Python异常处理语句有下面五种。

NO异常处理语句描述
1try/except捕捉异常并恢复
2try/finally无论是否发生异常,都执行清理
3raise手动在代码中触发异常
4assert有条件的在代码中触发异常
5with/as环境管理器

1.2 python默认异常处理器

描述

未对代码做异常捕获处理时,若发生异常,会触发默认的异常处理器,并且打印出错信息,包括触发的异常和堆栈信息。

示例

>>> def myget(obj,index):
    return obj[index]
>>> s='梯阅线条'
>>> myget(s,3)
'条'
>>> myget(s,5)
#索引越界,未做异常捕获处理时,触发默认的异常处理器
#即打印标准出错消息,包括触发的异常以及堆栈跟踪信息
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    myget(s,5)
  File "<pyshell#2>", line 2, in myget
    return obj[index]
IndexError: string index out of range

1.3 python捕获异常

描述

可以通过try/except捕获异常。

try内语句触发异常时会跳到except并执行except内语句,执行完成后,继续执行后面的语句,程序不会终止。

try内发生异常后面的语句不会被执行。

示例

>>> def myget(obj,index):
    return obj[index]

>>> s='梯阅线条'
>>> def nocatcher(msg,i):
    print(myget(msg,i))
    print('完成')
# 没有异常时正常输出
>>> nocatcher(s,3)
条
完成
# 有异常没捕获时,触发默认异常处理器,程序终止,不执行后面语句,不打印完成
>>> nocatcher(s,5)
Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    nocatcher(s,5)
  File "<pyshell#26>", line 2, in nocatcher
    print(myget(msg,i))
  File "<pyshell#2>", line 2, in myget
    return obj[index]
IndexError: string index out of range

>>> def hascatcher(msg,i):
    try:
        print(myget(msg,i))
        print('在异常发生后面的语句')
    except IndexError as e:
        print('出错了:',e)
    print('完成')

# 没有异常时正常输出
>>> hascatcher(s,3)
条
在异常发生后面的语句
完成
# 有异常且有捕获时,触发异常处理器,执行except内语句,程序继续执行后面语句,打印完成
# try内发生异常后面的语句不会被执行
>>> hascatcher(s,5)
出错了: string index out of range
完成

文章来源:https://blog.csdn.net/sinat_34735632/article/details/135095975
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。