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文件操作之目录遍历实例分析
May 20 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
python中使用print输出中文的方法
Jul 16 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
详解Django admin高级用法
Nov 06 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 Python
python实现控制台输出颜色
Mar 02 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
python for循环赋值问题
Jun 03 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
写php分页时出现的Fatal error的解决方法
2011/04/18 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
js实现购物车功能
2018/06/12 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
python实现自动重启本程序的方法
2015/07/09 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
python实现自动发送报警监控邮件
2018/06/21 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
django连接oracle时setting 配置方法
2019/08/29 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
如何使用repr调试python程序
2020/02/28 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
学校安全检查制度
2014/01/27 职场文书
广告学毕业生求职信
2014/01/30 职场文书
有趣的广告词
2014/03/18 职场文书
高中生班主任评语
2014/04/25 职场文书
大二学生自我检讨书
2014/10/23 职场文书
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers