Python中bug调试语句:try...except...else...finally语句

在Python语句中,当语句本身没有错误,但由于输入的错误会导致一系列的错误。或者有些代码写出来有错误,但是自己还需要他继续运行的情况,这个时候就需要try…except语句来进行代码的执行。

try…except语句

举个例子,我们进行两个整数的除法运算,代码如下:

a = int(input("请输入整数:"))
b = int(input("请输入整数:"))
c = a / b
print("运算的结果为:" , c)

输出为:

请输入整数:100
请输入整数:20
运算的结果为: 5.0

但是当我们在输入第一个数字为字符串类型,或者第二个数字为0时,会分别出现以下的错误:

ValueError: invalid literal for int() with base 10: 'a'
ZeroDivisionError: division by zero

此时,我们希望程序继续运行下去,则需要对错误进行排除和设置在错误时程序的行为,这个时候就需要用到try语句:

try:
	需要调试的语句
except 错误类型:
	发现错误时,执行的语句

仿照上面的语句语法,对之前的程序进行修改:

try:
	a = int(input("请输入整数:"))
	b = int(input("请输入整数:"))
	c = a / b
	print("运算的结果为:" , c)
except ZeroDivisionError:
    print("除数不能为0")
except ValueError:
	print("请输入整数")

则当除数输入为0时,输出为:

请输入整数:0
请输入整数:0
除数不能为0

当输入为字符串类型时,输出为:

请输入整数:10
请输入整数:a
请输入整数

利用try…except的语句就可以实现在错误的情况下程序的运行,以及输出错误时候的行为。但是要注意的是,except语句的错误捕获是从子类开始捕获的,解决不了就去找父类,依次类推。

try…except…else语句

上述的方法,是因为程序简单,我们能够猜到可能出现的错误,从而使用except进行分列,实现对错误类型的避免。但是大部分情况下,我们是不知道错误类型。这个时候我们可以用BaseException代替所有可能的错误,进行变量的输出,得到错误的类型:

try:
    a = int(input("请输入整数:"))
    b = int(input("请输入整数:"))
    c = a / b

except BaseException as e:
    print("程序错误:",e)

当输入除数为0时:

请输入整数:1
请输入整数:0
程序错误: division by zero

当输入字符串时:

请输入整数:a
程序错误: invalid literal for int() with base 10: 'a'

当没有错误,需要程序继续运行时,就要用到else语句。

try:
	需要调试的语句
except 错误类型:
	发现错误时,执行的语句
else:
	当程序没有出现错误时,进行else语句下的行为

对以上程序进行修改可以得到:

try:
    a = int(input("请输入整数:"))
    b = int(input("请输入整数:"))
    c = a / b

except BaseException as e:
    print("程序错误:",e)
else:
    print("运算结果为:",c)

程序输出,当有错误时:

请输入整数:a
程序错误: invalid literal for int() with base 10: 'a'

当没有错误时:

请输入整数:10
请输入整数:5
运算结果为: 2.0

在程序运行时,except…之后的语句与else…之后的语句相当于一个并行结构,如下图所示:
在这里插入图片描述

try…except…else…finally语句

加上finally语句后,目的是实现不管程序是否出现错误,都将程序运行结束,并释放内存。加上finally语句后,except和else依旧为并行结构,但最终,都会运行到finally语句上。上述结构图就变为:
在这里插入图片描述
上文的程序可以修改为:

try:
    a = int(input("请输入整数:"))
    b = int(input("请输入整数:"))
    c = a / b

except BaseException as e:
    print("程序错误:",e)
else:
    print("运算结果为:",c)
finally:
	print("运算结束")
print("程序结束")

当输入错误时:

请输入整数:-
程序错误: invalid literal for int() with base 10: '-'
运算结束
程序结束

当输入正确时:

请输入整数:10
请输入整数:2
运算结果为: 5.0
运算结束
程序结束

以上便是全部用法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值