Python异常处理结构

 

 

对于每一种高级语言来说,异常处理结构不仅能够提高代码的鲁棒性,而且 提高了代码的容错性,从而不会因为使用者的错误输入而造成系统崩溃,也可以 通过异常处理结构为使用者提供更加友好的错误提示。引发程序异常的原因有很 多种,较为常见的有除0 、下标越界等。

Python中提供了很多不同形式的异常处理结构,其基本思路都是先尝试执行 代码,再处理可能发生的错误。

1.try …except … 结构

在Python异常处理结构中,try …except … 结构使用得最为频繁,其中try子句  中的代码块为可能引发异常的语句,except子句用来捕获相应的异常。也可以解  释为,当try子句代码块执行异常并且被except子句捕获时,执行except子句的代码 块。

例如,在使用学校的学生成绩系统录入每科成绩时,要求输入0~100的整型 数值,而不接受其他类型的数值,如果输入的值超出0~100这一范围,则会给出 提示,示例代码如下:

 

#!/usr/bin/python

#coding:utf-8

mathScore = input( '数学成绩: ')

try:

mathScore = in t(mathScore)

if(0<=mathScore<=100) :

print("输入的数学成绩为:",mathScore)

else:

print("输入不在本科成绩范围内。")

except Exception as e:

print( '输入的数值有误! ')

输出结果:

数学成绩: 'a ',输入的数值有误!

数学成绩:121,输入不在本科成绩范围内。

2.try …except …else … 结构

 

100范围中的,也可以通过try …except …else … 结构进行编写。如果try代码的子 句出现了异常且该异常被except捕获,则可以执行相应的异常处理代码,此时就 不会执行else中的子句;如果try中的代码没有抛出异常,则继续执行else子句。

 

 

 

 

例如,将前面的示例用try …expect …else … 结构实现:

 

#!/usr/bin/python

#coding:utf-8

mathScore = input( '数学成绩: ')

try:

mathScore = in t(mathScore)

except Exception as e:

print( '输入的数值有误! ')

else:

if(0<=mathScore<=100) :

print( '输入的数学成绩为: ',mathScore)

else:

print( '请输入正确的数学成绩。 ')

输出结果:

 

数学成绩: 'a ',输入的数值有误!

数学成绩:121,请输入正确的数学成绩。

3.try …except …finally … 结构

在try …except …finally … 结构中,无论try子句是否正常执行,finally子句中的 代码块总会得到执行。在日常开发过程中,该结构通常用来做清理工作,释放try 子句中申请的资源。

例如,输入两个数值a ,b进行除法运算,并输出最终结果。同时为了确保程 序的鲁棒性,要求带有异常处理结构。鲁棒是指系统的健壮性,是在存在异常和 危险的情况下系统生存的关键,这个结构示例如下:

#!/usr/bin/python

#coding:utf-8

a = in t(input( 'a: '))

b = in t(input( 'b: '))

try:

div = a/b

print(div)

except Exception as e:

print( 'The second parameter cannot be 0 . ')

finally:

print( '运行结束! ')

输出结果:

a:1 .0

b:2 .0

0 .5

 

 

 

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值