第 11 节 Python程序调试和异常处理技巧

常见的错误
语法错误:例如,不正确的缩进、未定义的变量、括号不匹配等。
运行时错误:例如,尝试访问不存在的文件、内存溢出等。
类型错误:例如,将字符串与整数相加等。
逻辑错误:例如,程序没有按照预期的流程执行、条件判断不正确等。
输入错误:例如,无效的输入、输入的数据类型不正确等。

常见的错误-缩进错误

引发错误原因:
未正确地缩进代码块:在Python中,代码块是通过缩进来区分的。例如,在语句、循环、函数等中,代码块必须正确缩进。否则,将会引发IndentationError.
混合使用不同的缩进方式:在Python中,可以使用空格或制表符(Tab)进行缩进。但是,混合使用这两种方式会导致
IndentationError..因此,最好在整个项目中保持使用一种缩进方式,
错误的缩进级别:在嵌套代码块中,每一级的缩进必须正确对应。如果嵌套的代码块没有正确的缩进级别,将会引发IndentationError..
遗漏或添加了空格或制表符:在代码块中,每一行的缩进必须一致。如果某一行多添加或遗漏了空格或制表符,将会引发IndentationError.

 常见的错误-类型错误

引发错误原因:
将不同类型的值进行算术运算。
使用None进行算术运算或比较.
将不同类型的值转换为预期类型.
当函数的期望类型与传递给它的实际类型不匹配时,也会引发TypeError.

 常见的错误-索引错误

引发错误原因:
如果索引超出了序列的范围,将会引发IndexError.
尝试从一个空(没有元素)的序列(如列表、元组等)中获取元素时将会引发IndexError.
从字典中获取一个不存在的键时,将会引发KeyError。.
在进行切片操作时,如果切片索引超出范围,将会引发IndexError。

 常见的错误-文件未找到错误

引发错误原因:
打开一个文件时,如果文件路径设置不正确,那么就会引发文件未找到错误。
打开一个不存在的文件时,Python将无法找到该文件,从而引发文件未找到错误。
打开的文件位于与当前工作目录不同的位置,你需要提供正确的相对路径。
在进行文件操作后,确保使用clos()方法关闭文件。如果文件未正确关闭,那么在后续尝试访问或读取该文件时,可能会出现文件未找到错误。
如果Python进程没有足够的权限来访问指定的文件,也会引发文件未找到错误。

 

 异常处理方法

try except是一种Python中的异常处理结构,用于捕获和处理在程序执行过程中可能出现的异常。
ty块中包含可能会引发异常的代码,而except块则用于捕获并处理这些异常。当在ty块中执行代码时,如果发生了异常,程序会跳转到与该异常匹配的except块进行处理。如果没有适当的except块来处理异常,异常将会继续向上传递,直到被顶层的exception handler(默认为Python的默认异常处理器)处理。

 异常处理方法

定义了一个名为divide_numbers的函数,它接受两个参数:dividend和divisor。在函数内部,我们使用ty块来尝试执行除法操作,并将结果存储在变量result中。如果除数为零或两个操作数类型不正确,那么会引发异常。
在except块中,捕获了三种类型的异常:
ZeroDivisionError、TypeError和一个通用的
Exception。对于每种类型的异常,我们都打印了条相应的错误消息

 

 包含try,excepti和else三个部分。这种结构允许在ty块中运行一段可能抛出异常的代码,如果异常被捕获,则执行except块中的代码,否则执行else块中的代码。

ty块包含一段可能会抛出异常的代码。
except:块包含一段处理特定异常的代码。如果在try块中抛出了与except块中指定的异常类型相匹配的异常,那么就会执行这个except块中的代码。
else块包含一段正常情况下执行的代码。只有在try块中的代码成功执行,且没有抛出任何异常时,才会执行这个else块中的代码。

 

定义了一个名为calculate_sum的函数,它接受一个包含数字的列表作为参数。在函数内部,我们使用ty块尝试计算列表中数字的总和,并将结果存储在变量result中。如果列表中的元素不是数字类型,那么将引发TypeError异常。
在except块中,我们捕获了TypeError异常,并打印了一条相应的错误消息。如果ty块中的代码没有引发任何异常,那么将会执行ese块中的代码,并打印一条消息表示没有发生错误

 try、except和finally是Python中的异常处理语句,它们可以用来处理在代码执行过程中可能出现的异常情况。

ty语句块中包含可能会引发异常的代码,这些异常会被捕获并处理。在try块中可以使用except语句来指定要捕获的异常类型,并在except块中编写相应的异常处理代码。
finally语句块是可选的,它包含的代码无论是否发生异常都会被执行。这对于在异常处理后需要执行的清理操作非常有用,例如关闭文件或数据库连接等资源。

 

定义了一个名为divide_numbers的函数,它接受两个参数:dividend和divisor。在函数内部,使用ty块尝试执行除法操作,并将结果存储在变量result中。如果除数为零,那么将引发
ZeroDivisionError异常。无论是否发生异常,都会执行finally块中的代码,并打印一条消息。

 

raise是Python中的另一个异常处理语句,用于手动引发一个异常。你可以使用raise语句来创建自定义异常,或者使用内置的异常类型,如Exception。
"手动引发异常"是指使用raise语句主动触发一个异常。在异常处理的过程中,如果程序已经捕获并处理了一个异常,那么这个异常就会被程序正常处理,不会再次触发。但是,有时候我们可能需要再次触发这个异常,以便在程序的其他部分进行异常处理,这时就可以使用raise语句手动引发异常。

异常汇总

https://blog.csdn.net/qq_28807911/article/details/130468954

https://www.cnblogs.com/nmb-musen/p/10856023.html

pycharm 调试技巧

 

posted @ 2023-10-27 19:53  simadi  阅读(40)  评论(0编辑  收藏  举报