Python用户自定义异常的实现


Posted in Python onDecember 25, 2020

实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承。

常见的内置异常有:

Python用户自定义异常的实现

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用户自定义异常的实现的文章就介绍到这了,更多相关Python 自定义异常内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现随机密码字典生成器示例
Apr 09 Python
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
python中的多线程实例教程
Aug 27 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
python hook监听事件详解
Oct 25 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
May 11 Python
python logging模块的使用详解
Oct 23 Python
Python可以用来做什么
Nov 23 Python
Django前后端分离csrf token获取方式
Dec 25 #Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 #Python
python语言time库和datetime库基本使用详解
Dec 25 #Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 #Python
用python对excel进行操作(读,写,修改)
Dec 25 #Python
python Pexpect模块的使用
Dec 25 #Python
Python中读取文件名中的数字的实例详解
Dec 25 #Python
You might like
基于文本的访客签到簿
2006/10/09 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
JSON格式化输出
2014/11/10 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
python批量提交沙箱问题实例
2014/10/08 Python
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
python实现一个猜拳游戏
2020/04/05 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
西安交大自主招生自荐信
2014/01/27 职场文书
中层干部培训方案
2014/06/16 职场文书
效能风暴心得体会
2014/09/04 职场文书
免职证明样本
2014/10/23 职场文书
学校政风行风整改方案
2014/10/25 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年消防工作总结
2014/11/21 职场文书
降价通知函
2015/04/23 职场文书
小学安全工作总结2015
2015/05/18 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android