[异常处理]:自定义异常类型

python 中的 自定义异常类型。

# 自定义一个异常类,它继承了python内置的Exception基类
class MyERR(Exception):

    def __init__(self, msg, code, email):
        self.msg = msg
        self.code = code
        self.email = email

    def __str__(self):
        return self.msg

    def handle_err(self):
        """发邮件给运维人员"""
        print("错误代码 {}, 快去找运维来解决!".format(self.code))
        print("sending email to {} ...".format(self.email))
        return None


# 定义一个业务函数,用于向数据库保存订单信息
def save_order(name,num):
    if num < 0:
        raise MyERR("【error】:\n订单量不可能为负数!","CODE 998","123456789@qq.com")     # 触发MyERR异常
    else:
        print("商品:{}, 售出:{} 件\nsaving order information to db...".format(name,num))
    return None


# 执行代码
print("【订单管理系统】".center(40,"+"))
# 尝试保存第1组正常数据
try:
    save_order("苹果",10)
except MyERR as e:  # e是一个对象
    print(e)        # 调用e的 str 方法,打印错误信息
    e.handle_err()  # 给运维人员发邮件,报告错误
else:
    print("成功保存1组数据...")
# 尝试保存第2组异常数据
print()
try:
    save_order("特斯拉",-10)
except MyERR as e:  
    print(e)        
    e.handle_err()  
else:
    print("成功保存1组数据...")
# 退出系统
print()
print("【系统正常退出】".center(40,"+"))


# [运行结果如下]:########################
"""
++++++++++++++++【订单管理系统】++++++++++++++++
商品:苹果, 售出:10 件
saving order information to db...
成功保存1组数据...

【error】:
订单量不可能为负数!
错误代码 CODE 998, 快去找运维来解决!
sending email to 123456789@qq.com ...

++++++++++++++++【系统正常退出】++++++++++++++++
"""
# #######################################

--- to be continue ---

posted @ 2021-12-23 21:33  渝北小站  阅读(54)  评论(0编辑  收藏  举报