我有一个函数a()个,它以这种方式调用其他函数b()个、c()和d()(我将其图式化):
a()个
def a(request):
try:
b(request)
except Exception:
messages.error(request, 'error')
try:
c(request)
except Exception:
messages.error(request, 'error')
try:
d(request)
except Exception:
messages.error(request, 'error')
return redirect('namespace:url_name')
b()个
def b(request):
try:
do_something()
messages.success(request, 'I did')
except Exception:
messages.error(request, 'Couldn\'t do the thing')
return redirect('namespace:url_name')
But if an exception triggers in b()个 , its redirection doesn't work and c() and d() are still executed in a()个.
我是不是在redirect或exception handling的理解中漏掉了什么? 因为即使我在所有a个函数的异常中都设置了redirect,行为也不会改变.