详解 Python 中的异常处理

朱雀 2020-09-12 01:10 789阅读 0赞

异常是指程序中的例外,违例情况。异常机制是指程序出现错误后,程序的处理⽅法。当出现错误后,程序的执⾏流程发⽣改变,程序的控制权转移到异常处理。

异常处理可以使开发⼈员能以优雅的⽅式处理错误。

11.1 try-except

Python 使⽤ try-except 语句处理异常。语法如下:
20181226185550707.png

在 try 语句块中,我们写⼊可能会产⽣异常的代码,当异常发⽣时, try 语句块中的代码会被忽略,转⽽进⼊ except 语句块中处理异常。例如:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Zlcm1vbnRf_size_16_color_FFFFFF_t_70

上述代码的执⾏流程如下:

  1. 先执⾏介于 try 和 except 之间的语句。
  2. 如果没有异常,则 except 语句块中的代码会被跳过。
  3. 如果⽂件不存在,则产⽣异常,在 try 语句块中的其他代码会被跳过。
  4. 当异常发⽣时,如果异常类型和 except 关键字后的异常名称匹配,就执⾏except 分⽀中的代码。上述代码中只能处理 IOError 异常,如要处理其他类型的异常,还需要添加更多的 except 分⽀。

11.2 多个 except

try 声明可以有多个 except 分⽀,它还可以选择 else 和 finally 分⽀。语法如下:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Zlcm1vbnRf_size_16_color_FFFFFF_t_70 1
except 分⽀类似于 elif。当异常发⽣时,将检查 except 分⽀是否和异常类型匹配。如果匹配,就执⾏对应 except 分⽀中的代码。在最后⼀个 except 分⽀中,异常类型是被忽略了的。如果异常发⽣,但没有匹配到最后⼀个 except 之前的分⽀,则最后的
except 分⽀中的代码会被执⾏。如果没有任何异常发⽣,则执⾏ else 语句中的代码。finally 分⽀中的代码,⽆论是否有异常发⽣,都会被执⾏。

11.3 自定义异常

使⽤关键字 raise,可以在⽅法中⾃定义异常。语法为:

  1. raise ExceptionClass("Your argument")

例如:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Zlcm1vbnRf_size_16_color_FFFFFF_t_70 2
当⽤户输⼊的年龄⼩于 0 时,程序显⽰结果为:
20181226190248222.png
有很多内置的异常类,表8-1描述了最重要的几个。在“Python库参考手册”的Built-inExceptions一节,可找到有关所有内置异常类的描述。这些异常类都可用于raise语句中。
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Zlcm1vbnRf_size_16_color_FFFFFF_t_70 3

11.4 捕获多个异常

如果要使用一个except子句捕获多种异常,可在一个元组中指定这些异常,如下所示:

  1. try:
  2. x = int(input('Enter the first number: '))
  3. y = int(input('Enter the second number: '))
  4. print(x / y)
  5. except (ZeroDivisionError, TypeError, NameError):
  6. print('Your numbers were bogus ...')

11.5 异常之禅

异常处理并不是很复杂。如果你知道代码可能引发某种异常,且不希望出现这种异常时程序终止并显示栈跟踪消息,可添加必要的try/except或try/finally语句(或结合使用)来处理它。

有时候,可使用条件语句来达成异常处理实现的目标,但这样编写出来的代码可能不那么自然,可读性也没那么高。另一方面,有些任务使用if/else完成时看似很自然,但实际上使用try/except来完成要好得多。

发表评论

表情:
评论列表 (有 0 条评论,789人围观)

还没有评论,来说两句吧...

相关阅读

    相关 详解 Python 异常处理

    异常是指程序中的例外,违例情况。异常机制是指程序出现错误后,程序的处理⽅法。当出现错误后,程序的执⾏流程发⽣改变,程序的控制权转移到异常处理。 异常处理可以使开发⼈员能...