欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python学习笔记之try-except

程序员文章站 2023-02-04 12:50:05
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。 异常是使用try-except代 ......

python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

异常是使用try-except代码块处理的。try-except代码块让python执行指定的操作,同时告诉python发生异常时怎么办。使用了try-except代码块时,即便出现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是抛出原始错误traceback信息。

下面举个例子:

在division.py中写入下面代码:

print(5/0)

意思就是把5除以0的结果打印出来,但是我们都知道0是不能作为除数的,所以这个肯定是会报错的。

 执行结果如下:

1 traceback (most recent call last):
2   file "division.py", line 1, in <module>
3     print(5/0)
4 zerodivisionerror: division by zero

返回了一个traceback信息,在文件"division.py"的第1行有一个异常,异常对象为zerodivisionerror,异常原因是:division by zero,并且停止运行程序。

这显然不是我们所希望的。

当你认为可能发生了错误时,可编写一个try-except代码块来处理可能引发的异常。你让python尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办。

从上面的异常信息中,我们知道了是异常对象类型为zerodivisionerror,要处理这类异常的try-except代码块可以这样写:

1 try:
2     print(5/0)
3 except zerodivisionerror:
4     print("除数不能为0")

将引起异常的代码print(5/0)放在try中运行,如果try代码块中的代码运行起来没有问题,python将跳过except代码块;如果try代码块中的代码导致了错误,python将查找这样的except代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。

在这个示例中,try代码块中的代码引发了zerodivisionerror异常,因此python指出了该如何解决问题的except代码块,并运行其中的代码。这样,用户看到的是一条友好的错误消息,而不是traceback:

1 除数不能为0