、写一段自定义异常代码 自定义异常用raise抛出异常
时间: 2024-10-04 15:01:57 浏览: 37
在Python中,你可以自定义异常来创建特定于你的程序逻辑的错误类型。这有助于提高代码的可读性和错误处理的精确度。以下是如何编写一个简单的自定义异常的例子:
```python
class CustomException(Exception):
"""这是我们的自定义异常类"""
def __init__(self, message):
self.message = message
super().__init__(self.message)
# 使用自定义异常
def check_age(age):
if age < 0 or age > 150:
raise CustomException("年龄必须在0到150之间")
try:
check_age(-10) # 这将会触发异常
except CustomException as e:
print(f"发生了一个{type(e).__name__}: {e}")
```
在这个例子中,我们定义了一个名为`CustomException`的类,它是`Exception`类的子类。当`check_age`函数中的条件不满足时,我们会使用`raise`语句抛出自定义的异常。
`__init__`方法用于初始化异常,传递给父类的`super().__init__(message)`确保了正确地设置了异常消息。在`try-except`块中,我们捕获并打印这个自定义异常。
相关问题
自定义一个异常并用raise语句抛出。
好的,我可以帮你演示一个自定义异常并用 raise 语句抛出的例子。
```python
class MyError(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return f"MyError: {self.message}"
raise MyError("这是我自定义的异常")
```
这段代码定义了一个名为 MyError 的自定义异常类,该类继承自 Exception 类,并重写了 __init__ 方法和 __str__ 方法。在 __init__ 方法中,我们定义了一个 message 属性,用于存储异常信息。在 __str__ 方法中,我们返回了一个字符串,包含了异常的名称和信息。
接下来,我们使用 raise 语句抛出了一个 MyError 的实例,传入了异常信息 "这是我自定义的异常"。
运行这段代码,你将看到以下输出:
```
MyError: 这是我自定义的异常
```
这就是我们自定义的异常被抛出并捕获的结果。
try: assert 1 == 2, "自定义异常信息" except AssertionError as err: raise Exception("自定义异常信息") from err 这段代码的输出
这段代码中,我们使用了Python中的try-except语句和assert语句。
在try语句中,我们使用了assert语句来断言1等于2,并在assert语句中添加了一个自定义的异常信息。因为1不等于2,所以assert语句会引发AssertionError异常。在except语句中,我们使用了raise语句将一个新的Exception异常抛出,并指定原始异常err是新异常的cause,以便在异常链中正确地显示原始异常和新异常之间的关系。
因此,这段代码的输出如下:
```
Traceback (most recent call last):
File "<string>", line 2, in <module>
AssertionError: 自定义异常信息
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<string>", line 4, in <module>
Exception: 自定义异常信息
```
在输出中,第一部分是AssertionError异常的追踪信息,显示了原始异常的类型和自定义的异常信息。第二部分是Exception异常的追踪信息,显示了新异常的类型和自定义的异常信息,并指出原始异常err是新异常的cause。
阅读全文