だから私はDjangoが素晴らしいメッセージフレームワークを持っていることに気づきました。5つの異なるレベル(情報、エラー、デバッグ、警告、および成功)があります。
例外をビューレベルまで伝播し、これらの例外のいくつかを報告するのは本当に素晴らしいことです。
lib.py
def read_file(user, filename, **kwargs):
try:
with open(...):
return f.read()
except Exception, e:
raise e
utli.py
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
views.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エラー例外処理にかなり慣れていません。