Buo*_*uoy 2 python exception user-defined
我想处理特定的OSError代码,如下所示:
try:
os.scandir()
except OSPermissionError as error:
# Only catch errno.EACCES, errno.EPERM
handle_permission_error()
except OSFileNotFoundError as error:
# Only catch errno.ENOENT
handle_FileNotFoundError_error()
Run Code Online (Sandbox Code Playgroud)
这可以在python中完成吗?
os.scandir()不会抛出这些类型的异常.它提出了OSError例外.但是,它确实允许您确定发生的错误类型.
这里有大量可能出现的错误,可能是部分OSError.您可以使用它们来引发自己的自定义异常,然后在堆栈中进一步处理它们.
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
Run Code Online (Sandbox Code Playgroud)