時には評価に失敗する可能性のある関数を処理する最善の方法はありますが、失敗しても親ルーチンを停止する必要はありませんが、ユーザーに説明が必要な場合がありますか?メソッド内でユーザーメッセージを生成して処理しますか?
私はコードの中に深い番号を返すような関数を持っています。 Codingwiseでは、最も簡単な方法は、関数をnull可能にし、評価できないときはnullを返すことです。こうすることで、呼び出し元のルーチンは、関数が数値を返さなかったことを知りながら続けることができます。
しかし、場合によっては、ユーザーに不具合の理由を表示して、何を修正するかを知りたい場合があります。明らかにnullを返すだけでは十分な情報ではありません。匿名のリスナーがキャッチするかどうかを評価するときに、関数自体の内部でメッセージを生成し、必要に応じて表示する必要がありますか?
(論理関数がユーザーメッセージの作成に責任を負うべきでないことを正当に指摘している人には、関数がフルテキストメッセージを生成することを意味するわけではなく、それをメッセージに解析する)
他のオプションは、評価できない場合は関数内で例外をスローし、必要に応じてユーザーのメッセージにキャッチして解釈します。しかし、述べられているように、評価できないことは一般的にルーチンの停止を意味するものではなく、今度はTry ... Catchブロックを関数呼び出しの周りに置かなければならないでしょう。
「TryX」パターンはおそらくこれのための最良の解決策だと思います。そうすれば、ルーチンを停止する心配なしに関数を呼び出すことができ、必要に応じて失敗理由を得ることができます。成功/失敗情報を含むようにリターン・セットを拡張する提案された解決策もおそらく機能しますが、私は個人的にそれが頻繁に使用されるのを見ておらず、リターンを少し面倒に扱うかもしれません。 – Tekito