7

例外を使用してエラーを通知する言語では、サードパーティのコードを呼び出して、失敗した場合は代わりにフォールバック コードを実行したいと考えています。例えば:

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

私の経験では、サードパーティのコードによってスローされる可能性のあるすべての例外を知ることは非常にまれです。したがって、これらの例外をcatch条項に記載することはできません。一方で、catchすべての可能性のある例外を避けるように、私はよくアドバイスされます。

catchこの場合、条文はどのように書けばよいでしょうか。

4

2 に答える 2

1

それらを処理する特定の方法がある場合にのみ、特定の例外の種類をキャッチする必要があります。最も適切な順序で、必要な数の特定のタイプの例外をキャッチできます (また、キャッチする必要があります)。

すべての例外を同じように扱いたいだけの場合は、現在の型指定されていないキャッチが最高だと思います。本当の問題である IMO は、空の catch を残すときに発生します。クライアント コードは、関数が実際に本来の機能を実行したかどうかを認識できないためです。

于 2016-02-20T02:29:15.563 に答える
0

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

次に、サード パーティ コードによって例外がスローされない場合に返される結果を確認します。成功した結果が得られたかどうかを示すステータス値が返される場合があります。その場合、ステータスのチェックが必要になる場合があります。これは、ステータスが悪い場合にリカバリ アクション (「slower_calculation」メソッドを使用するなど) が必要かどうかを判断するためです。

于 2016-02-25T20:24:13.497 に答える