圆月山庄资源网 Design By www.vgjia.com
实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承。
常见的内置异常有:
1.自定义异常类型
#1.用户自定义异常类型,只要该类继承了Exception类即可,至于类的主题内容用户自定义,可参考官方异常类 class TooLongExceptin(Exception): "this is user's Exception for check the length of name " def __init__(self,leng): self.leng = leng def __str__(self): print("姓名长度是"+str(self.leng)+",超过长度了")
2.如何手动抛出异常:raise
系统的自带的异常只要触发会自动抛出,比如NameError,但用户自定义的异常需要用户自己决定什么时候抛出。
raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。大多数的异常的名字都以"Error"结尾,所以实际命名时尽量跟标准的异常命名一样。
#1.用户自定义异常类型 class TooLongExceptin(Exception): "this is user's Exception for check the length of name " def __init__(self,leng): self.leng = leng def __str__(self): print("姓名长度是"+str(self.leng)+",超过长度了") #2.手动抛出用户自定义类型异常 def name_Test(): name = input("enter your naem:") if len(name)>4: raise TooLongExceptin(len(name)) #抛出异常很简单,使用raise即可,但是没有处理,即捕捉 else : print(name) #调用函数,执行 name_Test() -----------------执行时满足条件后抛出一个用户定义的异常如下:-------------------------------------- enter your naem:是打发斯蒂芬 Traceback (most recent call last): 姓名长度是6,超过长度了 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 21, in <module> name_Test() __main__.TooLongExceptin: <exception str() failed>
3.捕捉用户手动抛出的异常
#1.捕捉用户手动抛出的异常,跟捕捉系统异常方式一样 def name_Test(): try: name = input("enter your naem:") if len(name)>4: raise TooLongExceptin(len(name)) else : print(name) except TooLongExceptin,e_result: #这里异常类型是用户自定义的 print("捕捉到异常了") print("打印异常信息:",e_result) #调用函数,执行 name_Test() ==========执行结果如下:================================================== enter your naem:aaafsdf 捕捉到异常了 Traceback (most recent call last): 打印异常信息: 姓名长度是7,超过长度了 姓名长度是7,超过长度了 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 16, in name_Test raise TooLongExceptin(len(name)) __main__.TooLongExceptin: <exception str() failed> During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 26, in <module> name_Test() File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 22, in name_Test print("打印异常信息:",e_result) TypeError: __str__ returned non-string (type NoneType)
标签:
Python,自定义异常
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
更新日志
2024年11月01日
2024年11月01日
- 《死亡搁浅2》部分新角色名及配音演员一览
- 群星《一撞飞天 电影原声音乐》[FLAC/分轨][678MB]
- 群星《戏梦》[320K/MP3][119.93MB]
- 群星《戏梦》[FLAC/分轨][308.4MB]
- 魔兽世界永久60级什么时间开 永久60级开启时间介绍
- 魔兽世界奥卡兹岛血藻刷新点一览 wlk奥卡兹岛血藻刷新位置介绍
- 英雄联盟s14中国队种子怎么排名 s14中国队种子队伍排名一览
- 柏菲·梁玉嵘《知音梁品》限量开盘母带ORMCD[低速原抓WAV+CUE]
- [东升唱片]孙露《寂寞诱惑AQCD》高码率[FLAC]
- 群星-第8届2012十大发烧唱片精选HQ2CD[WAV+CUE]
- 九号公司两轮电动安全季行动圆满收官:为行业树立安全管理新标杆
- 创新驱动未来 中国移动5G云游戏深化智能运维应用推动行业发展
- 大型手游“帧数拉满” 骁龙8至尊版游戏表现强悍
- 谢金燕.2002-YOYO姊妹【华特】【WAV+CUE】
- 群星.1994-摇滚列车【音乐家】【WAV+CUE】