Skip to main content

Python 入门基础知识 - 异常与调试

Python 入门基础知识 - 异常与调试

异常与调试

异常通常是脚本在运行过程中引发的错误。如果在脚本中未包含有关异常处理的代码,那么脚本将终止运行。

在Python中可以为脚本添加异常处理,以应对可能出现的错误,从而使脚本更'健壮'。

捕获异常

在脚本运行的过程中常见的异常有除零、下标越界等。在Python中可以捕获这些异常,并编写相关异常的处理语句。

使用try语句

在Python中可以使用try语句来处理异常。和Python中其他语句一样,try语句也要使用缩进结构。try语句也有

一个可选的else语句块。一般的try语句形式如下所示。

try:
  <语句> # 要进行捕捉的语句
except <异常名1>: # 要进行处理的语句
  <语句> # 对异常进行处理的语句
except <异常名2>: # 要进行处理的异常
  <语句> # 对异常进行处理的语句
else:
  <语句> # 如果异常未捕获,则执行该语句

执行过程如下

                                   |--- 引发异常1 ---> 异常1处理语句 ---
                                   |                                |
                                   |                                |
开始 ---> 其他语句 ---> try语句块|--- 未引发异常 ---> else语句块 ---> 其他语句 --->结束
                                   |                                |
                                   |                                |
                                   |--- 引发异常2 ---> 异常2处理语句 ---

try语句还有还有一种不包含except和else语句的特殊形式。其形式如下所示

try:
  <语句>
finally:
  <语句>

不管try语句块中是否发生异常,都将执行finally语句块。

实例演示如下:

l = [1, 2, 3]
print(l[5])

会遇到如下错误

IndexError: list index out of range
try:
    print(l[5])
except:
    print('Error')
else:
    print('No Error')

运行上面的代码会输出如下内容

Error
try:
    print(l[2])
except:
    print('Error')
else:
    print('No Error')

运行上面的代码会输出如下内容

3
No Error
try:
    l[2] / 0
except IndexError:
    print('Error')
else:
    print('No Error')

上面这段代码运行后会遇到如下错误

ZeroDivisionError: integer division or modulo by zero
try:
    l[2] / 0
except IndexError:
    print('IndexError')
except ZeroDivisionError:
    print('ZeroDivisionError')
else:
    print('No Error')

运行后会输出如下结果

ZeroDivisionError
try:
    print(l[2])
finally:
    print('A')

会输出如下

3
A
try:
    print(l[5])
finally:
    print('A')

会抛出异常并输出'A'

IndexError: list index out of range
A

实例环境声明

# _*_ coding: utf-8 _*_
#
# Python 2.7.13
版权声明

版权声明

durban.zhang 创作并维护的 Walkerfree 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。本文首发于 Walkerfree 博客(http://www.walkerfree.com/),版权所有,侵权必究。本文永久链接:http://www.walkerfree.com/article/63