Python中異常重試的解決方案詳解

2022-06-23 16:03:14 字數 1449 閱讀 6910

?1

2345

67defretry_if_io_error(exception):

returnisinstance(exception, ioerror)

@retry(retry_on_exception=retry_if_io_error)

defread_a_file():

withopen("file","r") as f:

returnf.read()

在執行read_a_file函式的過程中,如果報出異常,那麼這個異常會以形參exception傳入retry_if_io_error函式中,如果exceptionioerror那麼就進行retry,如果不是就停止執行並丟擲異常。

我們還可以指定要在得到哪些結果的時候去retry,這個要用retry_on_result傳入一個函式物件:?1

2345

6defretry_if_result_none(result):

returnresultisnone

@retry(retry_on_result=retry_if_result_none)

defget_result():

returnnone

在執行get_result成功後,會將函式的返回值通過形參result的形式傳入retry_if_result_none函式中,如果返回值是none那麼就進行retry,否則就結束並返回函式值。

總結