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

错误和异常处理: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
>>>

参考链接:错误和异常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值