实现捕捉函数异常并打印的decorator
时间: 2024-05-09 17:19:37 浏览: 16
以下是一个实现捕捉函数异常并打印的decorator的示例代码:
```python
def handle_exceptions(func):
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as e:
print(f"An exception occurred in function '{func.__name__}': {e}")
return wrapper
```
这个decorator定义了一个`wrapper`函数,用于捕捉被装饰函数`func`抛出的异常。如果没有异常发生,`wrapper`函数会直接返回`func`的执行结果;如果有异常发生,`wrapper`函数会捕捉到异常,并打印出异常信息,然后返回`None`。
使用这个decorator非常简单,只需要在需要捕捉异常的函数上面添加`@handle_exceptions`装饰器即可。例如:
```python
@handle_exceptions
def divide(a, b):
return a / b
result = divide(10, 0)
print(result)
```
在这个例子中,`divide`函数会抛出一个`ZeroDivisionError`异常,但是由于我们使用了`@handle_exceptions`装饰器,所以异常被成功捕捉并打印出来。程序会输出以下内容:
```
An exception occurred in function 'divide': division by zero
None
```
注意到程序的最后一行输出了`None`,这是因为`divide`函数在异常发生时返回了`None`。如果被装饰函数有返回值,那么这个返回值会被`wrapper`函数直接返回,而不会被丢弃。