Python中用户可以定义自己的异常类,并使用raise语句在满足一定条件时抛出自定义异常。以下是定义自己的异常类的详细步骤:
定义异常类
自定义异常类应该继承自内建的Exception
类,示例如下:
class MyException(Exception):
pass
抛出异常
可以使用raise
语句抛出自定义异常,示例如下:
def my_function(x):
if x < 0:
raise MyException("x不能为负数")
return x * x
print(my_function(-5))
输出:
Traceback (most recent call last):
File "example.py", line 7, in <module>
print(my_function(-5))
File "example.py", line 3, in my_function
raise MyException("x不能为负数")
__main__.MyException: x不能为负数
自定义异常的属性
可以通过在异常类的__init__
函数中定义属性,来自定义异常的属性,示例如下:
class MyException(Exception):
def __init__(self, message, code):
super().__init__(message)
self.code = code
def my_function(x):
if x < 0:
raise MyException("x不能为负数", 1001)
return x * x
try:
print(my_function(-5))
except MyException as e:
print(e.code, e)
输出:
1001 x不能为负数
实现示例
下面提供一个进一步的示例,具体实现了一个自定义异常类的场景:
class CollectionError(Exception):
def __init__(self, message, collection_name):
self.message = message
self.collection_name = collection_name
def __str__(self):
return f"{self.collection_name}集合错误:{self.message}"
class Collection:
def __init__(self):
self.__items = []
def add_item(self, item):
if item in self.__items:
raise CollectionError("该元素已存在", "集合")
self.__items.append(item)
c = Collection()
c.add_item(1)
print(c._Collection__items)
c.add_item(2)
print(c._Collection__items)
c.add_item(1)
输出:
[1]
[1, 2]
Traceback (most recent call last):
...
__main__.CollectionError: 集合集合错误:该元素已存在
上述示例实现了一个简单的集合类,当向集合中添加已经存在的元素时,抛出自定义异常类CollectionError
。该自定义异常类重载了__str__
函数,当该异常被捕获时,将会打印出自己定义的错误信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python 定义自己的异常类 - Python技术站