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 字符串格式化输出(format/printf)
Jul 21 Python
使用Python操作excel文件的实例代码
Oct 15 Python
python单例模式实例解析
Aug 28 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
Python字符串内置函数功能与用法总结
Apr 16 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
Python文件的操作示例的详细讲解
Apr 08 Python
如何用python绘制雷达图
Apr 24 Python
Python Django获取URL中的数据详解
Nov 01 Python
python数字类型和占位符详情
Mar 13 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执行速度全攻略(上)
2006/10/09 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
5 cool javascript apps
2007/03/24 Javascript
项目实践之javascript技巧
2007/12/06 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
如何在python字符串中输入纯粹的{}
2018/08/22 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
python async with和async for的使用
2019/06/20 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python-地图可视化组件folium的操作
2020/12/14 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
社区中秋节活动方案
2014/01/29 职场文书
化妆品店促销方案
2014/02/24 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
暑期培训班招生方案
2014/08/26 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
2016年记者节感言
2015/12/08 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python