擅长:python、mysql、java
<p><code>os.scandir()</code>不抛出这些类型的异常。它引发<a href="https://docs.python.org/2/library/exceptions.html#exceptions.OSError" rel="nofollow noreferrer">^{<cd2>}</a>异常。但是,它允许您确定发生的错误类型。在</p>
<p>有一个<a href="https://docs.python.org/2/library/errno.html" rel="nofollow noreferrer">large number of possible errors</a>可能是{<cd2>}的一部分。您可以使用这些来提升您自己的<a href="https://stackoverflow.com/a/1319675/189134">custom exceptions</a>,然后在堆栈的更高层处理它们。在</p>
<pre><code>class OSPermissionError(Exception):
pass
class OSFileNotFoundError(Exception):
pass
try:
os.scandir()
except OSError as error:
# Not found
if error.errno == errno.ENOENT:
raise OSFileNotFoundError()
# Permissions Error
elif error.errno in [errno.EPERM, errno.EACCES]:
raise OSPermissionError()
else:
raise
</code></pre>