4.4异常处理

2017-12-27  本文已影响112人  追梦者Every

在程序中,使用分支结构来避免可能出现的错误,是一种常见模式。

在二次方程求解器的例子中,首先检查数据,然后再调用sqrt函数。有时,函数会自己检查可能出现的错误,并返回一个特殊值,表明操作不成功。例如,不同的开平方操作,可能会返回一个负数,例如-1来暗示错误。由于平方根函数应该总是返回非负根,此值,可作为一个信号,通知发生了错误。

以下程序,运用分支来检查操作的结果,其中sqrt2是一个虚构的函数。

运用分支检查操作结果

如果处理特殊情况的分支语句,塞满整个代码空间,处理正常工作的主程序,就显得不那么清晰易读了。程序语言设计者因此想出了异常处理机制来解决这类设计问题。

异常处理机制,使得程序语言可以编写代码,来捕获和处理在程序运行时发生的错误,而不是显示检查算法的每一步是否成功。

异常处理程序可以简单的理解为,请做这些步骤,如果发生任何问题,按这样处理。

一、异常处理语句

1、Python使用try…except…,可使程序不因运行错误而崩溃。

try…except…

当python遇到一个try语句,它会尝试执行一个try语句体内的语句,如果执行这些语句没有错误,控制转移到try…except…后面的语句。如果语句体内发生错误,python会寻找一个符合该错误的异常语句,然后执行处理代码。

捕捉ValueError

上方是一个使用try…except…小程序,用来捕捉ValueError小异常。

2、python的异常处理语句还可以使用else和finally关键字。结构如下:

else、finally

else、finally都是可选的,非必须项。但是else必须出现在finally之前,finally必须在整个语句的最后位置。try体内如果无异常产生,则执行else语句,finally后面的子句表达的是,无论是否发生异常,这些代码都必须执行。

在python中,except语句主要是用于处理程序正常执行过程中出现的一些异常情况。如语法错误、数据处理错误、从未定义的变量上取值等。

而try…finally…语句则主要用于在无论是否发生异常情况,都需要执行一些清理工作的场合。比如,在通信过程中,无论通信是否发生错误,都需要在通信完成,或者发生错误时关闭网络连接。又或者,你在读一个文件,无论是否有异常发生,最后都要关闭文件,那就可以使用finally…try…来完成

3、一组利用try…except…else…finally语句的异常测试程序如下。

异常测试程序

下面是带错误处理的运行实例。

带错误处理的运行实例

输入为3,4时,程序给出输出,打印无异常,及最后子句已执行。

输入2,0时,程序捕捉到除数为0的类型错误,打印提示信息,并打印最后一句已执行这条语句。

求解二次方程程序

求解二次方程

带错误处理的运行实例,上述程序捕获错误,并打印一条信息,表明该方程没有实根。

4、异常处理语句

①try…except可以捕捉任何类型的错误。

②对于二次方程,还会有其他可能的错误,如:输入非数值类型(NameError),输入无效的表达式(SyntaxError)等。

③此时可以用一个try语句配多个except来实现。

改进后的求解二次方程

异常处理求解二次方程程序
上一篇下一篇

猜你喜欢

热点阅读