python除数为0报错_python 错误捕获机制分析

python语言是编程中使用率在Top 3之内的语言。python语言以灵活与简单著称,那么越是灵活的语言越需要判断出错的功力。

简单示例

以下是一个简单的错误程序,被除数不可为0,那么看看该代码的执行。

a =

b =

c = a / b

print c

出错报告是:在文件error_three.py 的第5行 c = a / b报错,原因是整数除法或者取模运算的被除数为0

解释异常被捕获的流程:当程序运行到 c = a / b时,有异常产生,然后python解释器就捕获了该异常,并判断异常的类型,最后将该异常抛出,终止了程序的运行

python的异常捕获原则是这样的:程序某一行产生异常,解释器会一层层的上报,寻找异常的捕获代码。如果解释一直上报到main()函数中都没有捕获异常的语句,那么main()函数会捕获到异常,并抛出异常。

下面看一个复杂一点的函数异常处理:

#coding:utf-

def get_num():

num = int(input("input you num:"))

return num

def fun_two():

num = get_num()

div = -num

return div

def fun_three():

two_num = fun_two()

three_num = / two_num

print three_num

if __name__ == '__main__':

fun_three()

这里产生异常的点有两个:

1、被除数为0,在13行

2、输入类型错误在4行

首先我们看第一个异常:

输入10,div = 10 - 10 = 0,three_num = 10 / 0,然后报错。

具体分析报错信息,从上到下:

1、错误出现在文件error_two.py中的19行,出错函数:fun_three

2、在fun_three中的14行,代码:three_num = 10 / two_num中报错,原因是:被除数不能为0。

按照python解释器的工作原理:程序在14行出错,然后一层层上报到main函数,main函数从上到下找到出错点。下面看看第二个错误是不是也符合这个规律。

出错解释:

1、程序在19行出错,出错函数是:fun_three

2、fun_three内部在13行出错,出错代码是函数:two_num = fun_two()

3、fun_two内部在8行出错,出错代码是函数:num = get_num()

4、get_num函数在第4行出错,出错代码是:num = int(input("input you num:")) 。出错原因是:类型错误,int()函数不能转化非数字类型的函数

从以上的分析来看,我们按照一个规律肯定能找到程序出错的地方和原因。但是光找到出错的地方还不够,还要能够自动的处理这些错误。程序要达到的效果是坚决不出错误,万一出了错误也要能够自动的捕获错误,记录下来。本着个原则,我们看看在python中是如果主动捕获错误的。

以第一个简单的程序为例,报错如下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值