[英]Python user-defined exceptions to handle specific OSError codes
我想處理特定的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()
這可以在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
你可以這樣做:
try:
os.scandir()
except OSError as error:
if error.errno in (errno.EACCES, errno.EPERM): #Permission denied
handle_permission_error()
elif error.errno == errno.ENOENT: #File not found
handle_FileNotFoundError_error()
else:
raise
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.