自定义异常处理 + yaml 多语言处理
1.多语言配置 yaml 文件,使用code 标识提示信息
zh_CN:
10200: "成功"
10400: "错误"
en:
10200: "Success"
10400: "Error"
2.加载读取配置文件,根据code 和语言类型返回对应提示信息,cf.default_language() 是默认语言类型
with open(os.path.join(system_folder(__file__, 1), 'language.yaml'), 'r', encoding='utf-8') as f:
LANGUAGE = yaml.load(f, Loader=yaml.FullLoader)
def response_message(language, code=10200):
"""
根据语言标识 代码返回对应的 语言提示新
:param language: 语言标识
:param code: 提示代码
:return:
"""
if language is None:
language = cf.default_language()
message = LANGUAGE.get(language, None)
if message is None:
message = LANGUAGE[cf.default_language()]
if code in message.keys():
msg_info = message[code]
else:
msg_info = code
return msg_info
3.自定义异常 需要继承 Exception类
class CodeException(Exception):
def __init__(self, e, *args, **kwargs):
super().__init__(args)
self.e = e
self.language = kwargs.get('language')
def __str__(self):
message = response_message(self.language, self.e)
return message
def response(self):
message = response_message(self.language, self.e)
return {'code': self.e, 'msg': message}
4.主动抛出异常 调用方式
def main():
try:
# a = 0
# c = 10/a
raise CodeException('40008')
except CodeException as ce:
print(ce.e)
print(ce)
print(ce.response())
except Exception as ex:
print(ex)

浙公网安备 33010602011771号