MST

星途 面试题库

面试题:Python异常处理else代码块与finally代码块的协同使用

在Python异常处理中,else代码块和finally代码块经常配合使用。请描述它们配合使用的逻辑,并编写一段代码,要求在不同异常情况下,体现出else和finally代码块的执行顺序和作用。
33.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

逻辑描述

  1. else代码块:当try块中没有发生异常时,else块中的代码会被执行。它提供了一种将没有异常时的正常逻辑与try块分开的方式,这样可以使try块专注于捕获异常,而不是混杂正常逻辑。
  2. finally代码块:无论try块中是否发生异常,也无论异常是否被except块捕获,finally块中的代码都会被执行。它通常用于执行一些清理操作,比如关闭文件、释放资源等。

代码示例

try:
    num1 = 10
    num2 = 2
    result = num1 / num2
except ZeroDivisionError:
    print("除数不能为零")
else:
    print("计算结果:", result)
finally:
    print("这是finally块,总是会执行")

不同异常情况分析

  1. 无异常情况try块正常执行,然后执行else块,最后执行finally块。
  2. 有异常情况try块遇到异常,执行对应的except块,然后执行finally块,else块不会执行。例如将num2改为0,此时try块触发ZeroDivisionError异常,except块捕获并打印错误信息,接着执行finally块,而else块不执行。