第三章:异常处理
Python代码出问题时,解释器会显示一个traceback,后面跟着一个错误消息;Python通过traceback来显示运行时发生了牟总意外情况,运行时的错误称之为“异常”(exception)。
Python允许在异常发生时捕获异常,有机会从错误中恢复;若当异常出现时将其忽略,则会导致程序崩溃。
try/except 处理机制:

1. try:
code......
2. except ValueError:
code......
3. else: #可选
code......
4. other code....
1)两种结构,try/except/else 与 try/except,第一种结构是在第二种结构基础上增加了else块;
2)先讲第一种结构的代码块执行逻辑:
先执行1部分代码;若1部分代码产生了与2的ValueError一致的异常,则终止1部分的执行,转而执行2部分的代码;
若执行1部分代码,没有产生异常,则执行完1部分代码,跳过2,执行3 部分代码;
若执行1部分代码产生了与2的ValueError不一致的异常,则程序崩溃;
程序不管执行1-->2,还是1-->3,4部分代码都可以顺序执行;
3)try/except 与 try/except/else的差异性:
从上面讲解的代码执行逻辑,2 / 3 部分的代码在执行上是互斥的,即执行2就不会执行3,不执行2,才能执行3;若将3部分代码与4部分代码合并,则无论2部分代码是否执行,都会执行3;
4)except不唯一,即一个try后面可以挂多个except,主要用于一段代码可能产生多种异常,请注意,是多种,不是多个。
try/except 相对于if/else的优势:
对于程序设计,代码的可靠性与健壮性,是工程上必须要考虑的;若不考虑异常,python代码在执行时,经常出现崩溃,肯定不是一个合适的工程;若将所有可能面临的异常操作在代码设计时予以考虑,则异常的复杂性可能会比代码本身功能设计更高,代码之美荡然无存,可阅读性与可维护性也会大打折扣;若采用try/except,则coder的注意力可以集中在本该完成的功能设计上;设计完成的代码的美感、可维护性等方面都有明显优势。
5) finally:
对于try/except 处理机制中,无论是否出现异常,都必须要做的一些工作,应该放在finally 语段中,确保不管按照哪种处理逻辑,都不会引起不可预知的问题。

浙公网安备 33010602011771号