定义自己的异常类

定义自己的错误类型有很多好处,比如可以清楚地显示出潜在的错误,让函数和模块更具可维护性。自定义错误类型还可以用来提供额外的调试信息。这都有助于改进Python代码,使其更易于理解、调试和维护。

比如下例中的函数,对输入的人名字符串进行校验。验证失败就会引发ValueError异常。

虽然知道上面的报错与某种错误的值有关,但是为了处理这个异常,仍需要查看validate()的实现,会耗费很长时间。

下面我们引入自定义异常类型来表示名字验证失败,基于Python内置的ValueError创建新的异常类。

一般情况下自定义异常都派生自Exception这个异常基类或者其他内置的Python异常,如ValueError或TypeError。

无论是公开发布Python软件包,还是为公司创建可重用的模块,最好为模块创建一个自定义异常基类,然后从中派生所有其他异常。这样用户就可以编写try...except语句来处理软件包中的所有自定义错误,无需手动捕获各个具体的异常。

【学习笔记】35、定义自己的异常类相关推荐

  1. C++学习笔记-第4单元-对象和类(基础)

    C++学习笔记 文章目录 C++学习笔记 第4单元 对象和类(基础) 单元导读 4.1 用类创建对象 4.1.1 对象和类 4.1.2 创建对象并访问 4.2 对象拷贝.分离声明与实现 4.2.1 对 ...

  2. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  3. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  4. Windows异常学习笔记(一)—— CPU异常记录模拟异常记录

    Windows异常学习笔记(一)-- CPU异常记录 基础知识 异常的分类 CPU异常 分析中断处理函数 _KiTrap00 分析 CommonDispatchException 总结 软件模拟异常 ...

  5. QT学习笔记(十一):QString类

    QT学习笔记(十一):QString类 1.概述 2.编辑操作 3.查询操作 3.转换操作 1.概述 1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中.QStr ...

  6. Guava学习笔记:简化异常处理的Throwables类

    Guava学习笔记:简化异常处理的Throwables类 参考文章: (1)Guava学习笔记:简化异常处理的Throwables类 (2)https://www.cnblogs.com/peida/ ...

  7. 影像组学视频学习笔记(35)-基于2D超声影像的影像组学特征提取、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/f82d30289d68 来源:简书,已获转载授权 RadiomicsWorld.com "影像组学世界" ...

  8. Python学习笔记(十五):类基础

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-24 23:59 学习笔记 1,Python中的大多 ...

  9. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

最新文章

  1. cuda安装教cudnn安装显卡问题
  2. Java 技术篇-IntelliJ IDEA修改类名后运行提示找不到或无法加载主类问题解决方法
  3. 数据仓库的架构与设计
  4. .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程)
  5. 微课|中学生可以这样学Python(例4.3):百钱买百鸡
  6. 运用tms320c54x汇编语言编写定点数运算,浮点数运算程序,运用TMS320C54x汇编语言编写定点数运算、浮点数运算程序...
  7. C#调用大漠插件,发送QQ和微信消息
  8. 【蓝桥杯Java组】数论基础—素数筛、最大公约数、最小公倍数
  9. PIC仿真器接口定义及连接注意事项
  10. 僵尸网络(CC服务器)
  11. oracle latch chain,Oracle Latch及latch矛盾
  12. 程序员520告白Html+Js+Css花瓣相册网页模板❤程序员表白必备
  13. 计算机应用职业的外部环境,完整的职业生涯规划书范文
  14. python爬虫爬取qq音乐热歌榜的歌曲到本地
  15. Alist云盘视频加密助手:支持云盘视频文件加密与在线播放,不用再担心视频文件被和谐了!
  16. Oracle用户被锁定问题
  17. dlink客户端 android,DLink IP Cam Viewer by OWLR
  18. Anaconda 下安装xgboost的最简单最快速方法
  19. 求n以内的所有素数(质数)个数
  20. Minecraft开服ipv6配置

热门文章

  1. Linux下Bash入门学习笔记
  2. 节点操作-创建并添加删除节点替换克隆节点
  3. 关于字符串指针不可修改的问题
  4. Code Generate of Power Designer[转]
  5. 在Vista下配置VS2003
  6. .NET Compact Framework s60v3(在S60上运行Windows Mobile程序)
  7. 向json对象中添加数组
  8. 【NLP】【七】fasttext源码解析
  9. Java网页小程序——Java Applet
  10. nginx代理设置域名跳转/域名重定向