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

发布于 2021-01-29 15:05:43

例如,这是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

关注者
0
被浏览
131
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看