7

例外を使用してエラーを通知する言語では、サードパーティのコードを呼び出したいが、失敗した場合は代わりに代替コードを実行する。例:例外が発生した場合にサードパーティのコードを堅牢に呼び出す方法

try: 
    result = third_party.fast_calculation() 
catch: 
    result = slower_calculation() 

私の経験では、サードパーティのコードによってスローされる可能性があるすべての例外を知ることは非常にまれです。したがって、私はこれらの例外をcatch節に記載することはできません。一方、可能性のあるすべての例外を除いて、私は頻繁にcatchには知らされません。

この場合、catch句はどのように書きますか?

答えて

1

例外タイプを処理する特別な方法がある場合にのみ、の特定の例外タイプをキャッチする必要があります。最も適切な順序で、必要に応じて多くの特定のタイプの例外をキャッチすることができます。

すべての例外を同じように処理したい場合は、現在の型指定されていないキャッチが得られるほど良いと思います。実際の問題は、IMOは空のキャッチを残すときに来ます。なぜなら、クライアントコードは、関数が実際にやったことを実際に行ったかどうかを知ることができないからです。

0

まず、サードパーティのコードが実際に例外をスローすることを確認します。それはできません。

第2に、サードパーティのコードで例外がスローされない場合に返される結果を確認します。成功した結果が得られたかどうかを示すステータス値が返される場合があります。もしそうなら、悪い戻り状態の後に回復動作(例えば、「slower_calculation」方法を使用する)が必要であるかどうかを判定するために、状態チェックが必要とされ得る。

関連する問題