Python基础灬异常

时间:2021-11-20 09:09:59

异常&异常处理

异常!=错误

在程序运行过程中,总会遇到各种各样的错误

有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。

有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。

还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。

常见异常

10 / 0
# ZeroDivisionError: division by zero

['1', 2, True][3]
# IndexError: list index out of range

...

异常处理

当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块,至此,执行完毕。

year = int(input("请输入年份 :"))
# 当用户输入非数值型数据,会产生ValueError
# ValueError: invalid literal for int() with base 10: 'abc'

为了交互的友好,可以在用户输入错误类型时做异常处理,让用户重新输入,而不是直接退出程序。

try:
    year = int(input("请输入年份 :"))
except ValueError:
    year = int(input("请输入数字类型的数据 :"))

异常抛出

在程序分支走到发生错误的部分,可以自已抛出异常进行处理。

try:
    year = int(input("请输入年份"))
    if year < 0:
        raise ValueError("请输入正确年份")
except Exception as e:
    print(e)