2.5.1异常处理之try/except

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.5.1异常处理之try/except相关的知识,希望对你有一定的参考价值。

参考技术A https://www.runoob.com/python3/python3-errors-execptions.html

异常捕捉可以使用 try/except(指不包括,而不是expect期待) 语句。
java是try/catch,python是except
以下例子中,让用户输入一个合法的整数,但是允许用户中断这个程序(使用 Control-C 或者操作系统提供的方法)。用户中断的信息会引发一个 KeyboardInterrupt 异常。

try 语句按照如下方式工作;
1、首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。
2、如果没有异常发生,忽略 except 子句,try 子句执行后结束。
3、如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。
4、如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
处理程序将只针对对应的 try 子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:

最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出。

Python入门教程第53篇 异常处理之try…except…finally

本篇我们继续学习 Python 异常处理,主要介绍 try…except…finally 语句的使用。

try…except…finally 语句简介

try…except 语句可以在 try 分支中捕获一个或多个异常并且在 except 分支中处理这些异常。该语句还有一个可选的 finally 分支:

try:
    # 业务代码
except:
    # 异常处理
finally:
    # 清理代码

无论是否发生异常,都会执行 finally 分支中的代码。try 分支或者任何 except 分支执行之后立即执行 finally 分支。

以下流程图演示了 try…except…finally 语句的执行过程:

try…except…finally 语句示例

以下示例使用了 try…except…finally 语句:

a = 10
b = 0

try:
    c = a / b
    print(c)
except ZeroDivisionError as error:
    print(error)
finally:
    print('Finishing up.')

输出结果如下:

division by zero
Finishing up.

以上示例中,try 分支产生了一个 ZeroDivisionError 异常,执行 except 分支之后还执行了 finally 分支。

以下示例中的 try 分支没有产生异常,因此执行完 try 分支之后再执行 finally 分支:

a = 10
b = 2

try:
    c = a / b
    print(c)
except ZeroDivisionError as error:
    print(error)
finally:
    print('Finishing up.')

输出结果如下:

5.0
Finishing up.

try…finally 语句

try…except…finally 语句中的 except 分支也可可选的,因此我们可以这样使用:

try:
    # 业务代码
finally:
    # 总是会被执行的代码

通常来说,当我们无法处理异常但又需要清理资源时可以使用这种语句结构。例如,无论是否出现异常都需要关闭已经打开的文件。

总结

  • 无论是否发生异常,try…except…finally 语句都会执行 finally 分支中的语句。
  • 使用 finally 分支清理资源,例如关闭文件。

以上是关于2.5.1异常处理之try/except的主要内容,如果未能解决你的问题,请参考以下文章

Python入门教程第54篇 异常处理之try…except…else

Python入门教程第52篇 异常处理之try…except

Python基础之异常处理

Python之异常处理语句

编程思想之异常处理:C++JavaJavaScript中的异常处理(Exception)

@ExceptionHandler异常统一处理