【Python基础】S01E13 Python 异常

发布于:2023-10-01 ⋅ 阅读:(76) ⋅ 点赞:(0)

Python 异常是什么

Python 使用称为异常(exception)的特殊对象来管理程序执行期间发生的错误。每当发生让 Python 不知所措的错误时,它(exception)都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行。但是如果你未对异常进行处理,那么程序将因为错误而停止。

异常是使用 try-except 代码块处理的。try-except 代码块让 Python 执行指定的操作,同时告诉 Python 在发生异常时应该怎么办。在使用 try-except 后,即便程序出现异常,程序也将继续运行;会显示出 except 中的内容。


一个异常举例

不使用 try-except,程序会报错并且退出;

print(5/0)
print("test")

>>> Traceback (most recent call last):
  File "E:\Code\csdn\test\learn_try.py", line 1, in <module>
    print(5/0)
ZeroDivisionError: division by zero

使用 try-except

try:
    print(5/0)
except:
    print("There is an error in code.")
print("test")

>>> There is an error in code.
test

程序发现了 try 代码块中的错误,进而执行 except 中的内容,然后继续执行下去,打印了测试代码。

当然,如果程序不发生错误,则不会执行 except 中的内容。


try - except - else

try:
    num1 = int(input("请输入一个整数: "))
    num2 = int(input("请输入另一个整数: "))
    result = num1 / num2
except ZeroDivisionError:
    print("除数不能为零!")
except ValueError:
    print("请输入有效的整数!")
else:
    # 如果没有发生异常,执行这里的代码
    print(f"结果是: {result}")

在上述代码中,首先尝试将用户输入的两个值转化为整数,如果用户输入的不是数值,将会诱发 ValueError 错误;如果除数为 0 ,则会出发 ZeroDivisionError 异常。如果没有发生异常,即用户输入的是有效的整数,则会运行 else 中的内容。


更多错误

比如 FileNotFoundError 异常;
其含义为没有找到文件异常。可能原因是文件名错误、文件地址错误、或者文件根本不存在;对于这种情况,我们可以使用 try-except 来处理;

try:
	contents = path.read_text(encoding='utf-8')
except FileNotFoundError:
	print(f"Sorry, the file {path} does not found.")

如果我们不希望将我的错误信息打印出,即保持“静默”;即使发生错误,也不将错误报告,有代码 pass

try:
	-- snip --
except:
	pass

总结

正所谓靠别人不如靠自己。
编写得很好且经过恰当测试的代码不容易出现内部错误,如语法错误和逻辑错误。但只要程序依赖于外部因素,如用户输入、是否存在指定的文件、是否有网络连接,就有可能出现异常。
凭借经验可判断该在程序的什么地方包含异常处理块,以及出现错误时,该向用户提供多少相关的信息。


2023.9.28
北京

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到