第18章 异常处理及程序调试

第18章 异常处理及程序调试,第1张

第18章 异常处理及程序调试 1.Python中常见的异常及描述 Python中常见的异常及描述 异常描述NameError尝试访问一个没有声明的变量引发的错误IndexError索引超出序列范围引发的错误IndentationError缩进错误ValveError传入的值的错误

IOError

输入输出错误

importError

当import无法找到模块或from无法在模块中找到相应的名称引发的错误AttributeErrot尝试访问未知的对象引发的错误TypeError类型不合适引发的错误

MemoryError

内存不足ZeroDivisionError除数为0引发的错误KeyError请求一个不存在的字典关键字引发的错误 2 异常处理语句 2.1 try...except语句

语法:

try:

        block1

except [ExceptionName [as alias]]:

        block2

参数:

block1:表示能出现错误的代码块。

exceptionName [as alias]:可选参数,用于指定要捕获的异常名,as可以指定别名

说明:

在使用try...except语句捕获异常时,如果在except后面不指定异常名称,则表示捕获全部异常。

block2:表示进行异常处理的代码块,这里可以输出固定的提示信息,也可通过别名输出异常的具体内容。

说明:

使用try...except语句捕获异常后,当程序出错时,输出错误信息后,程序会继续执行。

2.2 try...except...else语句

在try...except语句基础上增加一个else,用于指定当try语句块没有发声异常时要执行的语句块。该语句块中的内容在try语句中发现异常的时候,将不被执行。即else是无异常时的语句。

2.3 try...except...finally语句

完整的异常处理语句应该包含finally语句。通常情况下,无论程序中有无异常产生,finally代码块中的代码都会被执行。

语法:

try:

        block1

except [ExceptionName [as alias]]:

        block2

finally:

        block3

说明

如果程序中有一些在任何情形中都必须执行的代码,那么久可以把它们放在finally语句的区块中。

说明

使用except子句是为了允许处理异常。无论是否引发了异常,使用finally子句都可以执行。如果分配了有限的资源(如打开文件),则应将释放这些资源的代码放置到finally块中。

实 *** 中将关闭 *** 作放在finally块中。

2.4 使用raise语句抛出异常

如果在某个函数或方法可能会产生异常,但不想在当前函数或方法中处理这个异常,则可以使用raise语句在韩硕活方法中抛出异常。格式如下:

raise [ExceptionName[(reason)]]

参数:

ExceptionName:用于指定抛出的异常名称

reason:异常信息的描述。省略则不带描述。

以上两个参数为选参,如果省略,就会把当前的错误原样抛出。

3 程序调试

3.1使用自带的IDLE进行程序调试

(1)打开IDLE,在主菜单选择Debug——>Debugger菜单项,窗口显示[DEBUG ON]表示已经处于调试状态

(2)python3.7.0Shell窗口,选择File->Open菜单项,打开要调试的文件,设置断点

断点的作用:设置断点后,程序执行到断点时,就会暂时中断执行,程序可以随时继续。

添加断点:在要添加断点的代码行上,单击右键,选择“Set Breakpoint”,添加断点的行将以黄色底纹标记。

删除断点:右键选择“Clear Breakpoint”

添加断点的原则:程序执行到这个位置时,想要查看某些变量的值,在这个位置添加一个断点

(3)执行

(4)调试结束,显示DEBUG OFF

3.2 使用assert语句调试程序

assert是断言的意思,一般用于对程序某个时刻必须满足的条件进行验证。语法如下:

assert expression [,reason]

参数:

expression:条件表达式,True时,什么都不做,False时,抛出AssertionError异常

reason:可选参数,对判断条件条件进行描述。

assert通常和异常处理语句结合使用

try:
    division()   # 调用函数
except AssertError as e:  # 处理AssertError异常
    print("n输出有误:",e)

assert语句只在调试阶段有效

python -O Demo.py   #关闭assert语句

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5072749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存