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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
python定向爬取淘宝商品价格
Feb 27 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
Python登录系统界面实现详解
Jun 25 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 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 危险函数解释 分析
2009/04/22 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
php实现数据库的增删改查
2017/02/26 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
Google Maps API地图应用示例分享
2014/10/23 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
python实现画一颗树和一片森林
2018/06/25 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
人工神经网络算法知识点总结
2019/06/11 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
python 如何快速复制序列
2020/09/07 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
放飞梦想演讲稿200字
2014/08/26 职场文书
创先争优公开承诺书
2014/08/30 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android