python异常捕获及处理
Python异常捕获与处理
Exception
例如:
1 | import os |
- 在这里的
Exception
:Exception
是 Python 中所有内建异常的基类。当你使用except Exception as e
时,它意味着捕获任何类型的异常,并将异常对象赋值给变量e
。- 在这个代码块中,
try
块尝试打开 PDF文件并读取其段落文本。如果在这个过程中发生任何问题,比如文件不存在、文件损坏或者权限不足等,都会引发异常。except
块捕获这些异常后,会执行其中的代码。
return
还是以上面的Exception
实例代码为例:
如果Exception
异常处理代码这里没有使用return
,当出现异常时,程序可能会停止运行,而使用return
可以避免这种情况,以下是具体分析:
无return
时异常的影响
- 向上传播异常:当在
read_docx
函数中发生异常且没有使用return
语句来处理时,异常会向上传播到调用read_docx
函数的地方。如果调用者没有进一步处理该异常,异常会继续向上传播,直到到达 Python 解释器的顶层,导致整个程序崩溃,并在控制台输出异常信息。 - 程序执行中断:在异常传播的过程中,程序的执行会在抛出异常的位置中断,函数中异常发生点之后的代码将不会被执行。如果
read_docx
函数是在一个更复杂的程序流程中,比如在一个循环中读取多个文件,那么一旦出现异常,整个循环可能会终止,无法继续处理后续的文件。
使用return
的作用
- 捕获并处理异常:使用
return
语句在except
块中,可以捕获异常并返回一个特定的值(如空字符串),从而阻止异常继续向上传播。这样,程序可以继续执行调用read_docx
函数之后的代码,而不会因为异常而中断整个程序的运行。 - 提供默认值或占位符:返回空字符串相当于提供了一个默认值或占位符,表示文件读取操作出现了问题,但程序可以继续执行下去,并根据这个返回值进行相应的处理。这使得程序具有更好的容错性和稳定性,能够在一定程度上处理各种可能出现的错误情况,而不是遇到问题就直接崩溃。
- 和php一样,
return
语句加空字符串同样会终止它所处的函数代码块的运行.
try-except-finally之间的联动:
try
、except
、finally
运行机制
try
块:try
块中包含可能会引发异常的代码。当程序执行到try
块时,会逐行执行其中的代码。如果在执行过程中没有发生异常,try
块中的代码会正常执行完毕,然后跳过except
块(如果有),继续执行finally
块(如果有)之后的代码。except
块:如果在try
块中发生了异常,程序会立即停止执行try
块中剩余的代码,并跳转到与之匹配的except
块中执行。except
块用于捕获并处理异常,可以在其中进行错误处理,例如打印错误信息、进行数据回滚等。如果有多个except
块,可以根据异常的类型来选择执行哪个except
块。finally
块:finally
块是可选的,但如果存在,无论try
块中是否发生异常,也无论except
块是否被执行,finally
块中的代码都会在try
和except
块执行完毕后被执行。finally
块通常用于释放资源,如关闭文件、关闭数据库连接等,确保资源的正确清理和管理。
通过合理使用 try
、except
、finally
,可以使程序更加健壮,能够更好地处理运行过程中可能出现的异常情况,并保证资源的正确使用和释放。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dedsec的博客!