Python中try-except-else如何详细处理异常?
- 内容介绍
- 文章标签
- 相关推荐
本文共计881个文字,预计阅读时间需要4分钟。
在基础的try...except结构上,Python的异常处理机制还提供了else块。这实际上是原有try...except语句的扩展。在try块中,如果代码没有引发异常,则会执行else块。下面是一个使用else块的代码示例:
pythontry: # 尝试执行的代码 result=10 / 0except ZeroDivisionError: # 如果发生异常,执行这里的代码 result=除数不能为0else: # 如果没有异常,执行这里的代码 result=计算成功print(result)
在这个例子中,由于尝试除以零,会引发ZeroDivisionError异常,因此except块会被执行,而else块则不会。如果try块中的代码没有引发任何异常,else块中的代码将被执行。
在原本的try except结构的基础上,Python 异常处理机制还提供了一个 else 块,也就是原有 try except 语句的基础上再添加一个 else 块,即try except else结构。使用 else 包裹的代码,只有当 try 块没有捕获到任何异常时,才会得到执行;反之,如果 try 块捕获到异常,即便调用对应的 except 处理完异常,else 块中的代码也不会得到执行。
举个例子:
try: result = 20 / int(input('请输入除数:')) print(result) except ValueError: print('必须输入整数') except ArithmeticError: print('算术错误,除数不能为 0') else: print('没有出现异常') print("继续执行") 可以看到,在原有 try except 的基础上,我们为其添加了 else 块。现在执行该程序:
请输入除数:4
5.0
没有出现异常
继续执行
读者可能会问,既然 Python 解释器按照顺序执行代码,那么 else 块有什么存在的必要呢?直接将 else 块中的代码编写在 try except 块的后面,不是一样吗?
当然不一样,现在再次执行上面的代码:
请输入除数:a
必须输入整数
继续执行
也就是说,else 的功能,只有当 try 块捕获到异常时才能显现出来。在这种情况下,else 块中的代码不会得到执行的机会。而如果我们直接把 else 块去掉,将其中的代码编写到 try except 的后面:
try: result = 20 / int(input('请输入除数:')) print(result) except ValueError: print('必须输入整数') except ArithmeticError: print('算术错误,除数不能为 0') print('没有出现异常') print("继续执行") 程序执行结果为:
请输入除数:a
必须输入整数
没有出现异常
继续执行
本文共计881个文字,预计阅读时间需要4分钟。
在基础的try...except结构上,Python的异常处理机制还提供了else块。这实际上是原有try...except语句的扩展。在try块中,如果代码没有引发异常,则会执行else块。下面是一个使用else块的代码示例:
pythontry: # 尝试执行的代码 result=10 / 0except ZeroDivisionError: # 如果发生异常,执行这里的代码 result=除数不能为0else: # 如果没有异常,执行这里的代码 result=计算成功print(result)
在这个例子中,由于尝试除以零,会引发ZeroDivisionError异常,因此except块会被执行,而else块则不会。如果try块中的代码没有引发任何异常,else块中的代码将被执行。
在原本的try except结构的基础上,Python 异常处理机制还提供了一个 else 块,也就是原有 try except 语句的基础上再添加一个 else 块,即try except else结构。使用 else 包裹的代码,只有当 try 块没有捕获到任何异常时,才会得到执行;反之,如果 try 块捕获到异常,即便调用对应的 except 处理完异常,else 块中的代码也不会得到执行。
举个例子:
try: result = 20 / int(input('请输入除数:')) print(result) except ValueError: print('必须输入整数') except ArithmeticError: print('算术错误,除数不能为 0') else: print('没有出现异常') print("继续执行") 可以看到,在原有 try except 的基础上,我们为其添加了 else 块。现在执行该程序:
请输入除数:4
5.0
没有出现异常
继续执行
读者可能会问,既然 Python 解释器按照顺序执行代码,那么 else 块有什么存在的必要呢?直接将 else 块中的代码编写在 try except 块的后面,不是一样吗?
当然不一样,现在再次执行上面的代码:
请输入除数:a
必须输入整数
继续执行
也就是说,else 的功能,只有当 try 块捕获到异常时才能显现出来。在这种情况下,else 块中的代码不会得到执行的机会。而如果我们直接把 else 块去掉,将其中的代码编写到 try except 的后面:
try: result = 20 / int(input('请输入除数:')) print(result) except ValueError: print('必须输入整数') except ArithmeticError: print('算术错误,除数不能为 0') print('没有出现异常') print("继续执行") 程序执行结果为:
请输入除数:a
必须输入整数
没有出现异常
继续执行

