擅长:python、mysql、java
<p>正在创建自定义异常类</p>
<ul>
<li><p>提供程序可能产生的所有预期错误的声明性清单;使维护更容易</p></li>
<li><p>允许您有选择地捕获特定的异常,特别是在您建立有用的异常层次结构时:</p>
<pre><code>class ValidationError(ValueError):
pass
class NameTooShortError(ValidationError):
pass
...
class DatabaseError(RuntimeError):
pass
class DatabaseWriteError(DatabaseError):
pass
</code></pre></li>
<li><p>允许您更好地将表示和代码分开:您放入异常的消息不一定是最终用户将看到的消息,特别是如果您将应用程序本地化为多种语言。对于自定义类,您可以这样编写前端(使用通用的HTML模板语法,<code>_()</code>是gettext本地化函数):</p>
<pre><code>{% if isinstance(e, NameTooShortError) %}
<p>{{ _('Entered name is too short, enter at least %d characters') % e.min_length }}</p>
{% elif isinstance(...) %}
...
{% else %}
{# fallback for unexpected exceptions #}
<p>{{ _('An error occurred: %s') % e }}</p>
{% endif %}
</code></pre>
<p>试着用<code>ValueError(f'Name too short: {name}')</code>…</p></li>
</ul>