下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python raise用法(超级详细,看了无师自通)在前面章节的学习中,遗留过一个问题,即是否可以在程序的指定位置手动抛出一个异常? 答案是肯定的,Python允许我们在程序中手动设置异常,使用raise语句即可。读者可能会感到疑惑,即我们从来都是想方设法地让程序正常运行,为什么还要手动设置异 常呢?首先要分清楚程序发生异常和程序执行错误,它们完全是两码事,程序由于错误导致 的运行异常,是需要程序员想方法解决的;但还有一些异常,是程序正常运行的结果,比方 用raise手动引发的异常。raise语句的基本语法格式为:raise exceptionName (reason)其中,用口括起来的为可
2、选参数,其作用是指定抛出的异常名称,以及异常信息的相关描 述。如果可选参数全部省略,那么raise会把当前错误原样抛出;如果仅省略(reason),那么 在抛出异常时,将不附带任何的异常描述信息。也就是说,raise语句有如下三种常用的用法:raise :单独一个raiseo该语句引发当前上下文中捕获的异常(比方在except块 中),或默认引发RuntimeError异常。raise异常类名称:raise后带一个异常类名称,表示引发执行类型的异常。raise异常类名称(描述信息):在引发指定类型的异常的同时,附带异常的描述信息。想了解一下常用的异常类名称,可以阅读Python常见异常类型一节
3、。显然,每次执行raise语句,都只能引发一次执行的异常。首先,我们来测试一下以上3种 raise的用法: raiseTraceback (most recent call last):File / line L in raiseRuntimeError: No active exception to reraise raise ZeroDivisionErrorTraceback (most recent call last):File z line lz in raise ZeroDivisionErrorZeroDivisionError raise ZeroDivisionError(
4、除数不能为零”)Traceback (most recent call last):File z line 1, in raise ZeroDivisionError(除数不能为零”)ZeroDivisionError:除数不能为零当然,我们手动让程序引发异常,很多时候并不是为了让其崩溃。事实上,raise语句引发 的异常通常用try except ( else finally )异常处理结构来捕获并进行处理。例如:try:a 二 input。输入一个数:)#判断用户输入的是否为数字if(not a.isdigit():raise ValueError(a 必须是数字”)except Valu
5、eError as e:print(1引发异常:,repr(e)程序运行结果为:输入一个数:a引发异常:ValueErrorfa必须是数字,)可以看到,当用户输入的不是数字时,程序会进入if判断语句,并执行raise引发ValueError异常。但由于其位于try块中,因为raise抛出的异常会被try捕获,并由 except块进行处理。因此,虽然程序中使用了 raise语句引发异常,但程序的执行是正常的,手动抛出的异常 并不会导致程序崩溃。raise不需要参数正如前面所看到的,在使用raise语句时可以不带参数,例如:try:a 二 input(输入一个数:)if(not a.isdigit
6、():raise ValueError(a 必须是数字”)except ValueError as e:priW引发异常:”,repr(e)raise程序执行结果为:输入一个数:a引发异常:ValueErrorfa必须是数字,)Traceback (most recent call last):File D:python3.6l.py, line 4, in raise ValueError(a 必须是数字”)ValueError: a必须是数字这里重点关注位于except块中的raise ,由于在其之前我们已经手动引发了 ValueError 异常,因此这里当再使用raise语句时,它会再次引发一次。当在没有引发过异常的程序使用无参的raise语句时,它默认引发的是RuntimeError异 常。例如:try:a = input(输入一个数:)if(not a.isdigit():raiseexcept Ru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 减脂期肌肉量维持课件
- 2024辅导员考试新考点与适应性试题
- 阑尾切除患者健康教育规范
- 材料力学(给排水)材料力学绪论
- 医学26年:内分泌疾病与心血管 查房课件
- 肝胆外科患者出院指导与家庭护理
- 2026 减脂期包子课件
- 阴疮护理新技术应用
- 2026年共青团团员知识竞赛试卷及答案(四)
- 2026 塑型进阶鱼尾课件
- 河南近10年中考真题数学2014-2023年含答案
- 水文勘测工专业知识考试题库(含答案)
- 长城的历史资料概括
- 2020新版药品GCP考试题库及答案
- 证据法学-典型案例分析
- 2022年一级注册建筑师考试《建筑材料与构造》真题及答案解析
- 滴水实验 说课课件
- 小型液压机液压系统设计
- 玉米的综合利用玉米皮的综合利用
- GB/T 4450-1995船用盲板钢法兰
- 汽轮机TSI系统详解
评论
0/150
提交评论