擅长:python、mysql、java
<p><code>open</code>引发<code>FileNotFoundError</code>。它就是这么做的,你不能改变。你知道吗</p>
<p>您正在用一个新的子类扩展<code>FileNotFoundError</code>。这个子类是一个比<code>FileNotFoundError</code>更具体的</em>类。如果捕获的是更具体的子类,则与更通用的父类不匹配。也就是说,<code>except CustomFileExcetion</code>[sic]不会捕获<code>FileNotFoundError</code>。你知道吗</p>
<p>如果您想使用自己的自定义异常,则必须自己提出它们。例如,您可以使用<code>oppen_file</code>[sic]函数来使用该自定义异常:</p>
<pre><code>def oppen_file(file_path):
try:
open(file_path)
except FileNotFoundError as e:
raise CustomFileExcetion from e
</code></pre>
<p>现在,<code>oppen_file</code>的每个调用者都可以使用<code>CustomFileExcetion</code>:</p>
<pre><code>try:
oppen_file(path)
except CustomFileExcetion:
...
</code></pre>
<p>通常,您会为自己的业务逻辑实现自己的自定义异常;也就是说,复制/扩展/自定义<code>FileNotFoundError</code>没有什么意义,但是您可以实现与特定程序相关的全新异常,例如<code>UserPermissionsInsufficientError</code>或<code>CoordinatesOutOfBoundsError</code>或任何在特定域中有意义的异常。你知道吗</p>