所以我注意到 Django 有一个很好的消息框架。它有 5 个不同的级别(信息、错误、调试、警告和成功)。
将异常一直传播到视图级别并报告其中一些异常会非常好。
库文件
def read_file(user, filename, **kwargs):
try:
with open(...):
return f.read()
except Exception, e:
raise e
实用程序
def wrapper_read_file(user, filename, **kwargs):
try:
if user.is_authenticated and user.belongs('admin'):
lib.read_file(...)
else:
raise Exception("Unauthenticated user!!!")
except Exception, e:
raise e
视图.py
def my_view(request):
[..] do something here
try:
result = wrapper_read_file(...)
return render(request, 'hello.html', {'result': result})
except Exception, e:
if isinstance(e, IOError):
if e.errno==errno.ENOENT:
messages.add_message(request, message.ERROR, 'File does not exist.')
elif isinstance(e, OSError):
messages.add_message(request, message.ERROR, 'You don't have sufficient permission to open the file.')
return render(request, 'hello.html', {'hello_world': 'hello_world'}
Django 知道如何渲染,messages
而我有能力做到这一点。所以会显示messages
。
你认为我的异常处理看起来合理吗?有什么替代建议吗?我对 Python 错误异常处理很陌生。