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遍历 truple list dictionary的几种方法总结
Sep 11 Python
python统计多维数组的行数和列数实例
Jun 23 Python
python实现录音小程序
Oct 26 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
jupyter lab文件导出/下载方式
Apr 22 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
Pygame Draw绘图函数的具体使用
Nov 17 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 parse_url 一个好用的函数
2009/10/03 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
php实现评论回复删除功能
2017/05/23 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
python列表操作实例
2015/01/14 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
pymysql模块的操作实例
2019/12/17 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
讲座主持词
2014/03/20 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
小学捐书活动总结
2014/07/05 职场文书
如何写早恋检讨书
2014/09/10 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
2014年教研室工作总结
2014/12/06 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python