范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Python异常处理2

  三、异常的传递3.1概念:
  异常的传递——当函数/方法执行出现异常,会即将异常 传递给函数/方法的调用一方,如果传递到主程序仍然没有异常处理,程序才会被终止。3.2需求:定义函数 demo1() 提示用户输入一个整数并返回定义函数demo2() 调用demo1()在主程序中调用demo2()
  代码出现异常,异常传递过程情况1:一个函数
  代码:def demo1():     return int(input("请输入一个整数:"))   print(demo1())
  错误执行结果:
  错误信息是一个值错误,int无法转换d,其实真正出现错误的代码在第二行也就是转换整数的时候出现了错误,第二行代码出现问题的时候会把异常交给第五行代码,第五行代码是在调用demo1这个函数,把这个异常交到了主程序print(demo1()),而这个主程序并没有做异常处理,所以主程序才会被终止。
  代码出现异常,异常传递过程情况2:嵌套函数
  代码:def demo1():     return int(input("请输入一个整数:"))   def demo2():     return demo1()   print(demo2())
  错误执行结果:
  流程理解:
  整数转换时出现了错误,出现错误的代码仍然是第二行,当第二行代码出现错误后会把异常交给第六行,这行带妈妈是在demo2函数内部调用demo1函数,当异常被传递到demo2之后并没有在demo2函数内部处理异常,既然没有处理异常就会把这个异常继续向上传递,传递给代码的第九行,第九行是在主程序中调用demo2这个函数。
  这个就是异常一级一级传递的过程,如果某个函数出现了异常,会把这个异常向上传递,传递给这个函数的调用一方,一直传递到主程序之后如果发现异常没有被处理程序才会被终止。3.3异常的传递在开发中用处:
  问题思考:
  在开发中如果想保证每个函数的正常运行,在开发时在每个函数内部就会大量的增加捕获异常的代码,试想如果每个函数内部都需要增加捕获异常的代码,程序员在开发的时候就会太辛苦了,需要增加大量的代码。
  那么怎么减轻这种工作量呢?
  答:
  因为出现异常之后会从函数中一层一层的传递到主程序中,那么就可以利用异常的传递性,在主程序中捕获异常。
  修改代码如下:def demo1():     return int(input("请输入一个整数:"))   def demo2():     return demo1()   # 利用异常的传递性,在主程序中捕获异常 try:     print(demo2()) except Exception as result:     print("未知错误 %s" % result)
  错误执行结果:捕获到了异常
  3.4总结:
  在开发中,可以在主函数中增加异常捕获,而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中,这样就不需要在代码中增加大量的异常捕获,能够保证代码的整洁。四、抛出异常4.1 主动抛出异常的应用场景
  在开发中,除了代码执行出错,Python解释器会抛出异常之外,还可以根据应用程序特有的业务需求主动抛出异常 。
  示例:
  需求:提示用户输入密码,如果长度少于8,抛出异常
  注意:
  当前函数只负责提示用户输入密码,如果密码长度不正确,需要其他函数进行额外处理。因此可以抛出异常,由其他需要处理的函数捕获异常。4.2 主动抛出异常
  在python中提供了一个Exception异常类,在开发时如果满足特定业务需求时,希望抛出异常,可以 :创建一个Exception的对象使用raise关键字抛出异常对象(语法:raise 异常对象)
  需求:定义input_password函数,提示用户输入密码如果用户输入密码长度<8,抛出异常如果用户输入密码长度>=8,返回输入的密码
  代码1:看代码整体是否可以跑完,异常代码最后再写def input_password():      # 1.提示用户输入密码     pwd = input("请输入密码:")      # 2. 判断密码长度 >=8 ,返回用户输入的密码     if len(pwd) >= 8:         return pwd      # 3. 如果<8,主动抛出异常     print("主动抛出异常")   # 提示用户输入密码 print(input_password())
  执行结果:当输入密码长度>=8时
  执行结果:当输入密码长度<8时
  为什么会输出一个None?
  因为input_password函数没有做任何的返回,没有任何的返回在用input函数进行输出的时候就会在控制台输出一个空对象None.
  代码2:完整版
  在创建Exception对象时,PyCharm 会给我们提示信息,*args代表多值元组参数 ,所以在创建异常对象时可以传递一下异常的描述信息。def input_password():      # 1.提示用户输入密码     pwd = input("请输入密码:")      # 2. 判断密码长度 >=8 ,返回用户输入的密码     if len(pwd) >= 8:         return pwd      # 3. 如果<8,主动抛出异常     print("主动抛出异常")     # > 1.创建一个Exception的对象,可以使用错误信息字符串作为参数     ex = Exception("密码长度不够")      # > 2.使用raise关键字抛出异常对象     raise ex   # 提示用户输入密码 try:     print(input_password()) except Exception as result:     print(result)
  执行结果:密码长度正确时
  执行结果:密码长度错误时
  在创建Exception对象时,输入了错误信息字符串作为参数,之后在调用一方捕获异常时直接输出就可以把创建异常对象指定的异常信息输出在控制台。

胡鑫宇事件酬金从五万涨到了50万,这笔钱是否该付?2023年2月2日10点,随着胡同学事件新闻发布会的全网直播,历时一百多天的事件,真相大白了胡同学系自缢而亡。但是为此事件还未完结,还剩下两个问题引起网友热议第一,胡同学失踪事件学提前还房贷利大于弊吗提前还房贷利大于弊吗董希淼岁末年初之际,不少个人住房贷款借款人加快提前偿还贷款,掀起一波提前还贷热潮。这其中的原因是多方面的。商业银行借款人及相关部门应理性对待,并采取合理措施加以旅游市场持续升温品味浓浓中国年央视网消息千家万户中国年,喜庆祥和丰富多彩。在辽宁四川浙江等地,新春庙会热闹上演,一起去看看。在辽宁沈阳的老北市庙会上,传统民俗高科技演艺等为游客带来沉浸式体验。台湾游客我觉得这庙又是非农夜!就业薪资增长或进一步降温,市场和美联储皆大欢喜?由美联储领衔的超级央行周将伴随着非农数据落下帷幕,美国的就业市场会如美联储所愿继续释放降温信号吗?北京时间周五2130,美国劳工部将发布备受市场关注的1月非农报告。经济学家普遍预计多地开展数字人民币试点场景多元覆盖各领域春节假期,数字人民币的使用也有显著上升。吃火锅买鲜花看电影,都可以使用数字人民币消费券,用数字人民币支付也成为很多市民的新风尚。在首批数字人民币试点城市深圳,春节元宵两期发放1亿元为重新修复外资信心吸引全球投资,各省份纷纷出台重磅措施中国地方政府公布了一系列新政策,旨在吸引外国投资和人才,以拉动经济增长,但企业和经济学家表示,可能需要一段时间之后才能看到结果。自上周以来,上海浙江江苏和广东等区域经济强省已经推出机构2022年印度智能手机出货量同比下降9,高端市场份额首次达到两位数根据Counterpoint市场监测服务发布的最新数据,印度的智能手机出货量在2022年同比下降9,达到1。52亿部以上。这一同比下降是印度智能手机市场有史以来的第二次下降,这可以大魄力!奇瑞宣布全系车型享受整车终身质保2月1日,奇瑞汽车宣布,正式开启全系车型整车终身质保政策。奇瑞汽车表示,自2023年1月1日起,凡购买奇瑞集团旗下星途奇瑞捷途奇瑞新能源四大品牌全系车型均可享受。这是对此前全系车型认准3大纯粮食酒标记,行家再便宜也可以放心喝喝酒的人多,但是懂的人少,笔者甚至还遇到过喝了十几年酒,还是分不清粮食酒和勾兑酒差别的酒友呢。今天我就是带着各位来解决这个问题的,其实也很简单,按照国家的规定,不管是啥酒,什么价位注册制启动能带给小散户们怎样的利益呢?对于实体经济来说,对于大多数规范经营的企业来说,对于想实实在在参与资本市场的散户们来说,是个值得纪念的日子。这是中国股市开始趋向成熟的体现。本人建议主要关注这三点主要措施一新股上市磨砺堪担重任的铁肩膀全国组织部长会议强调,要激励担当作为,进一步调动干部干事创业积极性主动性创造性。担当作为是共产党人的政治品格,更是党员干部的为政之德。党员干部要注重从党性觉悟上找根源,在练好内功上
男篮毒瘤逼宫山东高速男篮赶走巩晓彬,其经纪名下皆成问题球员作为山东高速男篮曾经的防守悍将,早在山东高速男篮首个时期,就联手丁彦雨航逼宫导致巩晓彬离开,随后又一直策划和代表丁彦雨航和山东高速男篮的闹剧直接毁掉了丁彦雨航的职业生涯,原本以为睢最近瓜有点多!应重视三大球职业球员的爱情观金钱观和大局观近期,涉及中国足球篮球职业联赛发展的球队球员事件比较密集,引发球迷广泛关注和讨论。篮球领域,男篮方面,新疆男篮短期内退出回归CBA周琦与新疆男篮关于签约归属权问题的纠纷女篮方面,C最适合小球时代却没生在小球时代的5名球员放今天难有敌手!(点击阅读可看更多857体育赛事资讯)2015年当以投射为主的水花兄弟把奥布莱恩杯带给旧金山之后,整个联盟的比赛风格就发生了潜移默化的转变,人们开始更加相信速度更加相信空间能力对于博主大连人球员桂子涵即将前往日本联赛直播吧3月18日讯据博主莱斯特城的小狐狸报道,大连人球员桂子涵即将前往日本联赛。桂子涵2003年5月8日出生于大连,场上司职边翼位或边后卫,曾多次入选中国国少队国青队。桂子涵曾效力法尔克曼联准备1。2亿欧元报价穆阿尼,球员经纪人正推动转会直播吧3月18日讯德国知名记者法尔克在CaughtOffside专栏中,透露了曼联队即将为法国前锋穆阿尼送上一份价值1。2亿欧元的巨额报价,这份报价会让法兰克福无法拒绝。上周,穆阿本月115日林葳个人社媒涨粉19万在所有CBA球员中排名第1直播吧3月18日讯国内媒体懒熊体育今日联合拼渤数科(Pinball),统计分析了3月1日15日运动员在主要社交媒体上的表现。其中,同曦队小将林葳在微博和抖音上共涨粉19。1万,在所打破亚洲纪录!德州造立大功!3月17日,位于德州天衢新区的德州联合石油科技股份有限公司传出消息该公司生产的高温螺杆钻具,助力中国石化深地工程顺北84斜井8937。77米顺利完井,打破亚洲陆上垂深最深千吨井纪录古今有志青年之于敏氢弹之父咏于敏张玉林兴振民族于敏篇,和平永葆祖国安。愿将一体献宏处,隐姓埋名卅载年。核武理论填空阙,高科项目始发源。爱岗敬业做模范,改创先锋勇敢攀。于敏,出生于河北省宁河县(现天津市宁河区打破亚洲纪录!德州造立大功!3月17日,位于德州天衢新区的德州联合石油科技股份有限公司传出消息该公司生产的高温螺杆钻具,助力中国石化深地工程顺北84斜井8937。77米顺利完井,打破亚洲陆上垂深最深千吨井纪录淄博市博山区情暖农民工,法律关爱送不停中工网讯春风送暖,阳光明媚。连日来,山东省淄博市博山区总工会开展了系列尊法守法携手筑梦服务农民工公益法律服务行动,送法到基层,送法到一线职工身边,切实解决农民工及新就业形态劳动者群美国银行危机暂缓一口气美国最大的几家银行采取了这一行动,反映出它们对第一共和银行以及各种规模银行的信心地方性银行破产后,市场情绪的蔓延,储户开始担心自己的资金安全。摄财经记者金焱文财经特派记者金焱发自华