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实现多线程抓取知乎用户
Dec 12 Python
python机器学习之KNN分类算法
Aug 29 Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 Python
python性能测量工具cProfile使用解析
Sep 26 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
Python文件的操作示例的详细讲解
Apr 08 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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的博客ping服务代码
2012/02/04 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
js继承的实现代码
2010/08/05 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python中property函数用法实例分析
2018/06/04 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
怎样创建、运行java程序
2014/08/01 面试题
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
公司酒会致辞
2015/07/30 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
公司转让协议书
2016/03/19 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
Vue实现动态查询规则生成组件
2021/05/27 Vue.js