Python用户自定义异常的实现

作者:xiaobai小白 时间:2023-06-10 10:06:40 

实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 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)

来源:https://www.cnblogs.com/ywxbbbbb/p/9958613.html

标签:Python,自定义异常
0
投稿

猜你喜欢

  • Dreamweaver量身打造Wordpress留言板

    2009-12-09 17:08:00
  • 在django项目中导出数据到excel文件并实现下载的功能

    2023-09-10 08:31:43
  • Python使用pandas处理CSV文件的实例讲解

    2021-01-31 18:23:37
  • pandas分别写入excel的不同sheet方法

    2022-08-27 04:15:03
  • 详解ES6之async+await 同步/异步方案

    2023-08-24 11:10:54
  • php延迟静态绑定实例分析

    2023-11-23 11:44:57
  • 详解mybatis-plus实体类中字段和数据库中字段名不对应解决办法

    2024-01-26 23:59:19
  • 使用Perl创建指定编码格式(如utf-8)文件的实现代码

    2023-07-28 08:11:11
  • 基于mysql多实例安装的深入解析

    2024-01-21 01:59:27
  • 原生 JS Ajax,GET和POST 请求实例代码

    2024-04-16 08:54:28
  • 在Python程序中操作文件之flush()方法的使用教程

    2023-12-02 16:41:31
  • MySQL如何修改账号的IP限制条件详解

    2024-01-14 19:41:59
  • Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    2022-04-27 00:26:39
  • ASP中RegExp对象正则表达式语法及相关例子

    2007-08-12 17:46:00
  • 使用django的objects.filter()方法匹配多个关键字的方法

    2022-04-08 06:11:20
  • python冒泡排序简单实现方法

    2022-09-27 12:28:57
  • Python对列表中的各项进行关联详解

    2023-10-26 20:19:34
  • MySQL游标概念与用法详解

    2024-01-23 05:20:54
  • python双向链表实现实例代码

    2023-05-16 09:38:54
  • python实现五子棋小游戏

    2023-02-28 08:37:59
  • asp之家 网络编程 m.aspxhome.com