Select Language

AI社区

AI技术百科

6.3、Python try else语句的用法

前面介绍的都是 except 分支,也就是异常分支。except 分支在发生异常时被执行。本节介绍的分支在没有抛出异常时才被执行,这就是 else 分支。

下面演示了这种用法。

>>> def except_demo(a, b):            # 定义一个包含异常处理的函数
...     try:
...             a = a / b
...     except ZeroDivisionError, except_obj:   # 捕捉被0除的异常
...             print("Exception Message = %s" % except_obj.message)
...     else:                         # 没有异常时会触发的else分支
...             print("No Exception is Got")
...
>>> except_demo(12, 0)                # 被0除了
        # 第5行的输出
Exception Message = integer division or modulo by zero 
>>> except_demo(12, 2)
No Exception is Got                   # 第7行的输出,在没有发生异常时执行


需要注意的是,如果没有捕捉到异常,而且在正常分支中直接使用 return 来返回,则 else 分支不会被执行。如下面的例子:

>>> def div(a, b):
...     try:
...         c = a / b
...         return c        # 这个很关键,导致else分支永远不会被执行
...     except ZeroDivisionError as ex_obj:
...         print(u"捕捉到了异常: %s" % ex_obj)
...     else:               # 该分支不会被执行,不论是否有异常抛出
...         print(u"没有捕捉到异常")
...
>>> div(8, 2)               # 没有抛出异常,else分支也不会被执行
4.0
>>> div(8, 0)               # 抛出异常,else分支不会被执行
捕捉到了异常: division by zero


我要发帖
Python异常处理
2021-12-10 23:41:19加入圈子
  • 7

    条内容
异常处理也是现代编程语言的基本特性,使用异常处理可以将正常分支和异常分支分割开来,而不像 C 语言那样,正常分支和异常分支是混在一起的。
Python 中,异常就是一个特殊的对象,通过该异常对象可以给异常处理函数传递异常发生时的信息。
本章介绍如何捕捉异常、得到异常信息、忽略某些异常、抛出异常、自定义异常对象,以及异常处理在 Python 2 和 Python 3 中的异同,最后介绍常见的系统定义异常。