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入门之语句(if语句、while语句、for语句)
Jan 19 Python
python验证码识别实例代码
Feb 03 Python
对numpy中轴与维度的理解
Apr 18 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
python 多个参数不为空校验方法
Feb 14 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
python文件处理fileinput使用方法详解
Jan 02 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
python小程序之飘落的银杏
Apr 17 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 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中http与https跨域共享session的解决方法
2014/12/20 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
Python中装饰器学习总结
2018/02/10 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
浅析python的Lambda表达式
2019/02/27 Python
django admin组件使用方法详解
2019/07/19 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
pycharm的python_stubs问题
2020/04/08 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
python绘制分布折线图的示例
2020/09/24 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
物流管理应届生求职信
2013/11/07 职场文书
长辈证婚人证婚词
2014/01/09 职场文书
预备党员公开承诺书
2014/05/28 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书