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

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

1.1 Python异常处理语句

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

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

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

1.2 python默认异常处理器

描述

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

示例

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

你可能感兴趣的:(python,python)