持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情
作为控制流机制的异常
不要将异常视为纯粹为了错误。它们是一种方便的控制流机制,可用于简化程序。在许多编程语言中,处理错误的标准方法是让函数返回一个值(通常类似于Python的 None),指示某些事情不对劲。每个函数调用都必须检查是否已返回该值。在Python中,更常见的是让函数在无法生成与函数规范一致的结果时引发异常。
Python 引发语句强制发生指定的异常。加注语句的形式是
异常名称通常是内置异常之一,例如,值错误。但是,程序员可以通过创建内置类 Exception 的子类(参见第 10 章)来定义新的异常。不同类型的异常可以有不同类型的参数,但大多数情况下,参数是单个字符串,用于描述引发异常的原因。
练习:实现满足规范的功能
让我们再看一个例子,Figure_9-3。该函数get_grades返回一个值或引发一个与值关联的异常。如果打开的调用引发 IO 错误,它将引发值错误异常。它本可以忽略loError,让程序调用get_grades部分来处理它,但这会为调用代码提供更少的关于出错的信息。调用get_grades的代码使用返回值以计算另一个值或处理异常并打印信息性错误消息。
断言
Python 断言语句为程序员提供了一种简单的方法来确认计算的状态是否符合预期。断言语句可以采用以下两种形式之一:
或者
当遇到断言语句时,将计算布尔表达式。如果它的计算结果为 True,则执行将以其快乐的方式继续。如果计算结果为 False,则会引发断言错误异常。
断言是一种有用的防御性编程工具。它们可用于确认函数的参数是否属于适当的类型。它们也是一个有用的调试工具。例如,它们可用于确认中间值是否具有预期值或函数返回可接受的值。