Python用户自定义异常的实现

陈默
陈默
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍如何在Python中通过继承Exception类创建自定义异常,并使用raise语句手动抛出。文章详细演示了如何定义异常类、在代码中触发异常,以及使用try-except结构捕获并处理用户自定义异常,帮助开发者更好地进行错误管理。

在实际开发场景中,系统内置的异常类型往往无法完全覆盖所有业务需求。此时,开发者可以通过创建自定义的异常类来扩展异常处理机制。自定义异常类通常需要继承自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 相关产品和应用

全部下载

专题列表