小编典典

仅加薪的例外有任何用处吗?

python

例如,这是django.templates.loader.app_directories.py。[1]中的一些代码。

try:
    yield safe_join(template_dir, template_name)
except UnicodeDecodeError:
    # The template dir name was a bytestring that wasn't valid UTF-8.
    raise

如果您发现一个异常只是为了提出它,它有什么作用?

[1]
http://code.djangoproject.com/browser/django/trunk/django/template/loaders/app_directories.py


阅读 446

收藏
2021-01-20

共1个答案

小编典典

在链接到的代码中,还有另一个附加的异常处理程序:

try:
    yield safe_join(template_dir, template_name)
except UnicodeDecodeError:
    # The template dir name was a bytestring that wasn't valid UTF-8.
    raise
except ValueError:
    # The joined path was located outside of template_dir.
    pass

由于UnicodeDecodeError是的子类ValueError,因此第二个异常处理程序将导致UnicodeDecodeError忽略任何异常。看起来这不是预期的效果,为避免这种情况UnicodeDecodeError,第一个处理程序将对其进行显式处理。因此,两个处理程序一起使用时ValueError,只有a不是时,才会忽略UnicodeDecodeError

2021-01-20