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 list操作用法总结
Nov 10 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
python函数的万能参数传参详解
Jul 26 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
详解python中*号的用法
Oct 21 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
python time()的实例用法
Nov 03 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 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文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
Python实现发送email的几种常用方法
2014/08/18 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
python interpolate插值实例
2020/07/06 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
深圳茁壮笔试题
2015/05/28 面试题
低碳环保标语
2014/06/12 职场文书
家庭困难证明
2014/10/12 职场文书
汉字听写大会观后感
2015/06/12 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python