python装饰器和异常处理_Python 封装异常处理装饰器

Python 封装异常处理装饰器

在写Python代码时,可能由于各种各样的意外bug导致程序出错,导致程序停止运行,因此我们常常会使用try...expect...表达式来捕获异常,并处理异常,可以使程序顺利执行下去。

但这样的做法也会有一定的缺陷,不利于程序的调试,Exception只会显示异常的原因信息,但具体在哪行代码出现了错误,它并未告诉我们,所以不利用程序的调试。

所以python的traceback包可以在异常中显示异常的原因信息,出现异常代码的行数都会打印出来。

同时,在每个函数中使用异常,可能会显得代码冗余,因此写了一个处理异常的装饰器。

功能

显示执行代码后异常的具体时间

显示异常的原因

显示异常的具体函数

打印出现异常的代码的具体位置、行数

代码

# -*- coding:UTF-8 -*-

# @Time : 2020/1/30 12:51

# @Author : Lemo

# @Email : 2655543796@qq.com

# @File : 装饰器.py

from datetime import datetime

import traceback

from functools import wraps

# 异常输出

def except_output(msg='异常'):

# msg用于自定义函数的提示信息

def except_execute(func):

@wraps(func)

def execept_print(*args, **kwargs):

try:

return func(*args, **kwargs)

except Exception as e:

sign = '=' * 60 + '\n'

print(f'{sign}>>>异常时间:\t{datetime.now()}\n>>>异常函数:\t{func.__name__}\n>>>{msg}:\t{e}')

print(f'{sign}{traceback.format_exc()}{sign}')

return execept_print

return except_execute

实例

@except_output('异常信息')

def lig(a = 5,b = 0):

print(a/b)

lig()

输出

============================================================

>>>异常时间: 2020-02-04 19:36:48.937323

>>>异常函数: lig

>>>异常信息: division by zero

============================================================

Traceback (most recent call last):

File "D:/Files/Documents/python/index/装饰器.py", line 17, in execept_print

return func(*args, **kwargs)

File "D:/Files/Documents/python/index/装饰器.py", line 30, in lig

print(a/b)

ZeroDivisionError: division by zero

============================================================

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值