文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python——异常处理

2023-09-04 12:12

关注

文章目录

异常

while True:    try:        price=float(input("请输入价格:"))        print('价格为:%5.2f' % price)        break    except ValueError:        print('您输入的不是数字。')
程序运行结果:请输入价格:x您输入的不是数字。请输入价格:y您输入的不是数字。请输入价格:12.989价格为:12.99

Python中的异常类

捕获与处理异常

try:    <可能出现异常的语句块> except <异常类名字name1>:    <异常处理语句块1>  #如果在try部份引发了'name1'异常,执行这部分语句块except <异常类名字name2> as e1:    <异常处理语句块2>  #如果在try部份引发了'name2'异常,执行这部分语句块except < (异常类名字name3, 异常类名字name4, …)> as e2:    <异常处理语句块3>  #如果引发了'name3'、'name4'、…中任何一个异常,执行该语句块…except:    <异常处理语句块n>   #如果引发了异常,但与上述异常都不匹配,执行此语句块else:             #如果没有上述所列的异常发生,执行else语句块finally:    <任何情况下都要执行的语句块>
try:   x=float(input('请输入设备成本:'))   y=int(input('请输入分摊年数:'))   z=x/y   print('每年分摊金额为%.2f'% z)except ZeroDivisionError:   print("发生异常,分摊年数不能为0.")except:   print('输入有误')else:   print("没有错误或异常")finally:   print('不管是否有异常发生,始终执行finally部分的语句')
如果在终端以正确的格式输入,则except后面的模块均不会执行,else后的模块会得到执行,finally后面的模块语句会执行。程序运行结果如下:请输入设备成本:15请输入分摊年数:3每年分摊金额为5.00没有错误或异常不管是否有异常发生,始终执行finally部分的语句
如果在终端输入的被除数为0,则会检测到ZeroDivisionError异常对象,在except ZeroDivisionError之后的模块会得到执行来处理该异常。异常处理完成后,执行finally后面的语句块。程序运行结果如下:请输入设备成本:15请输入分摊年数:0发生异常,分摊年数不能为0.不管是否有异常发生,始终执行finally部分的语句
如果在终端只输入除数,没有输入被除数,try模块中将抛出TypeError异常。在程序的异常处理except中没有列出该类型异常的处理程序模块,但是TypeError是except的子类,因此不带异常类型的except模块能够拦截该异常进行处理。异常处理结束后,finally后面的语句也会得到执行。程序运行结果如下:请输入设备成本:15请输入分摊年数:输入有误不管是否有异常发生,始终执行finally部分的语句

自定义异常类

with语句

with context-expression [as var]:with语句块

为了读取、打印该文件中的所有内容,并确保程序在出现异常时也能正确关闭文件对象,使用try-finally的程序:

try:    f=open('testwith.txt','r')    for line in f:        print(line,end='')finally:    f.close()
with open('testwith.txt','r') as f:    for line in f:        print(line,end='')

由于使用了with语句,不需要try-finally语句来确保文件对象的关闭。无论该程序是否出现异常,文件对象都将由系统自动关闭。

断言

断言从Python1.5版本开始引入,是申明表达式为真的判定。如果表达式为假则抛出异常。断言语句可以理解为raise-if-not语句,用来测试表达式,如果表达式为假,则触发AssertionError异常;如果表达式为真,也就是断言成功,则程序不采取任何措施。断言的语法格式如下:
assert expression [, arguments]
其中expression是断言表达式;arguments是断言表达式为假时传递给AssertionError对象的字符串。

在这里插入图片描述

来源地址:https://blog.csdn.net/m0_65639340/article/details/126261176

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯