
[python面向对象学习笔记七] 异常
发布日期:2021-05-07 00:09:12
浏览次数:26
分类:精选文章
本文共 2335 字,大约阅读时间需要 7 分钟。
1.概念
程序运行时,如果python解释器遇到一个错误,会停止程序的执行,提示错误信息,这就是抛出异常。
程序员通过异常捕获,可以针对突发事件做处理,不让程序因为报错而终止。
2.捕获异常
(1)简单的捕获异常语法
对某些不能确定是否正确的代码,可以增加try(尝试)来捕获异常,并加以处理。
try: 尝试执行的代码except: 出现错误的处理
例子:要求用户输入整数
try: num = int(input("请输入一个整数:")) # 不能确定正确执行的代码except: print("请输入正确的整数!") # 错误的处理代码print("-" * 50) # 无论是否出现错误,程序均会执行后续的代码输出:请输入一个整数:1.2请输入正确的整数!--------------------------------------------------
(2)错误类型捕获
针对不同类型的异常,做出不同的响应。
当解释器抛出异常时,最后一行的第一个单词,就是错误类型。语法格式:
try: # 不能保证正确的代码except 错误类型1: # 针对错误类型1的处理except (错误类型2, 错误类型3): # 针对错误2,3的处理except Exception as result: # 固定语法,针对其他错误类型 print("未知错误 %s" % result)
例子:提示用户输入一个整数,使用8除以这个整数并输出。
有两种错误的可能类型:① 用户输入的不是整数 ②用户输入的是0,分母不能为0
try: num = int(input("请输入一个整数:")) result = 8/num print(result) except ZeroDivisionError: print("除0错误")except ValueError: print("请输入整数") except Exception as result: print("未知错误 %s" % result)输出:请输入一个整数:a请输入整数
3.异常捕获的完整语法
try: # 不能保证正确的代码except 错误类型1: # 针对错误类型1的处理except (错误类型2, 错误类型3): # 针对错误2,3的处理except Exception as result: # 固定语法,针对其他错误类型 print("未知错误 %s" % result)else: # 没有异常才会执行的代码finally: # 无论是否有异常,都会执行的代码
代码正确:try——> else ——> finally
代码有错误:try——> except ——> finally例子:
try: num = int(input("请输入一个整数:")) # 不能确定正确执行的代码 result = 8 / num print(result)except ValueError: print("请输入正确的整数!") # 错误的处理密码except Exception as result: print("未知错误 %s" % result)else: print("尝试成功")finally: print("都会执行")print("-" * 50)输出:请输入一个整数:0未知错误 division by zero都会执行--------------------------------------------------
4.异常的传递
当 函数/方法 执行 出现异常,会将异常往上传递给 函数/方法 调用的一方。直到传到主程序,仍然没有异常处理,程序才会被终止。
因此,在开发中,可以在主程序中,利用异常的传递性,增加异常捕获。这样就不需要在代码中增加大量的异常捕获了,保证代码的简洁性。
例子:
def demo1(): return int(input("输入整数:"))def demo2(): return demo1()# 在主程序中,利用异常的传递性,捕获异常try: print(demo2())except Exception as result: print("未知错误 %s" % result)
5.主动抛出异常
根据应用程序特有的业务需求主动抛出异常。
语法:
① 创建一个 Exception 对象。Exception 是python提供的专门的异常类。 ② 使用 raise 关键字抛出异常对象。例子:提示用户输入密码,如果长度少于8,抛出异常。
def input_password(): pwd = input("请输入密码:") if len(pwd) >= 8: return pwd else: ex = Exception("密码长度不够") # 创建异常对象,可以使用错误信息字符串作为参数 raise ex # 主动抛出try: print(input_password())except Exception as result: print(result)输出:请输入密码:1234密码长度不够
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月28日 06时02分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
关于Objects类的getClass方法为什么可以得到子类的地址的思考
2021-05-09
239. 滑动窗口最大值
2021-05-09
纵览全局的框框——智慧搜索
2021-05-09
手把手教你如何快速构建应用内消息推送与运营能力
2021-05-09
快服务流量之争:如何在快服务中占领一席之地
2021-05-09
【活动】直播揭秘<如何从0开发HarmonyOS硬件>
2021-05-09
Cocos平台集成AGC性能管理(二)—— 性能管理SDK集成
2021-05-09
华为推送服务 | 简单一招,提高用户活跃和留存
2021-05-09
基于Cocos SDKHub接入华为HMS Game服务—打包上架流程
2021-05-09
Unity平台 | 快速集成华为性能管理服务
2021-05-09
详细实例教程!集成华为虚假用户检测,防范虚假恶意流量
2021-05-09
对模拟器虚假设备识别能力提升15%!每日清理大师App集成系统完整性检测
2021-05-09
使用Power BI构建数据仓库与BI方案
2021-05-09
pytest封神之路第二步 132个命令行参数用法
2021-05-09
Django认证系统并不鸡肋反而很重要
2021-05-09
快用Django REST framework写写API吧
2021-05-09
tep用户手册帮你从unittest过渡到pytest
2021-05-09
12张图打开JMeter体系结构全局视角
2021-05-09
学习版pytest内核测试平台开发万字长文入门篇
2021-05-09
Spring Cloud Stream如何消费自己生产的消息?
2021-05-09