欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python 错误和异常处理:try/except/else/finally用法大全

程序员文章站 2022-06-26 17:41:37
错误和异常处理:try/except/else/finally用法大全样例1:try/except首先,执行 try 子句 (try 和 except 关键字之间的(多行)语句)。如果没有异常发生,则跳过 except 子句 并完成 try 语句的执行。如果在执行 try 子句时发生了异常,则跳过该子句中剩下的部分。参考:try 语句的工作原理(https://docs.python.org/zh-cn/3/tutorial/errors.html)>>> try:.....

错误和异常处理:try/except/else/finally用法大全

样例1:try/except

  1. 首先,执行 try 子句 (try 和 except 关键字之间的(多行)语句)。
  2. 如果没有异常发生,则跳过 except 子句 并完成 try 语句的执行。
  3. 如果在执行 try 子句时发生了异常,则跳过该子句中剩下的部分。
    参考:try 语句的工作原理
    (https://docs.python.org/zh-cn/3/tutorial/errors.html)
>>> try:
...     b = 10
...     a = b
...     print(a)
... except:
...     print("出错啦")
...
10
>>>
>>> try:
...     # b = 10
...     a = b
...     print(a)
... except:
...     print("出错啦")
...
出错啦

样例2:try/多个except

  • 一个 try 语句可能有多个 except 子句,以指定不同异常的处理程序。 最多会执行一个处理程序。
  • 最后的 except 子句可以省略异常名,以用作通配符。但请谨慎使用,因为以这种方式很容易掩盖真正的编程错误!它还可用于打印错误消息,然后重新引发异常(同样允许调用者处理异常):
>>> try:
...     # b = 10
...     a = b1
...     print(a)
... except SyntaxError:
...     print("SyntaxError")
... except SystemError:
...     print("SystemError")
... except:
...     print("otherError")
...
otherError
>>>

样例3:raise

  • raise 语句允许程序员强制发生指定的异常
>>> raise NameError("name 'b1' is not defined")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b1' is not defined
>>>

样例4:try/except/else/finally

  1. 先执行try block, 直到发现了错误,不再执行异常之后的代码。
  2. 执行except block,若匹配到异常类型,处理异常;若未匹配到,继续向下执行。
  3. else,无异常处理时会执行其代码
  4. finally,无论try语句是否有异常,最后都要执行的代码。
>>> try:
...     # b3 = 10
...     a = b3
...     print(a)
... except SyntaxError:
...     print("SyntaxError")
... except SystemError:
...     print("SystemError")
... except:
...     print("otherError")
... else:
...     print("无异常处理时执行此行")
... finally:
...     print("finally 子句在任何情况下都会被执行。")
...
otherError
finally 子句在任何情况下都会被执行。
>>>
>>>
>>> try:
...     # b3 = 10
...     a = b3
...     print(a)
... except SyntaxError:
...     print("SyntaxError")
... except SystemError:
...     print("SystemError")
... else:
...     print("无异常处理时执行此行")
... finally:
...     print("finally 子句在任何情况下都会被执行。")
...
finally 子句在任何情况下都会被执行。
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
NameError: name 'b3' is not defined
>>>

参考链接:错误和异常

本文地址:https://blog.csdn.net/summer_ruoshui/article/details/109625057