簡體   English   中英

Python用戶定義的異常,用於處理特定的OSError代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM