これは一般的なプログラミングの質問であり、特定の言語には関係ありません。
新しいプログラマーは通常、何らかの値を計算してから値を返すメソッドを作成します。
public Integer doSomething()
{
// Calculate something
return something;
}
public void main()
{
Integer myValue = doSomething();
}
しかし、 の計算中に例外が発生した場合something
、特にユーザーにフィードバックを提供する場合、例外を処理する最善の方法は何でしょうか? の計算の try/catch を実行しsomething
、例外がキャッチされた場合、何を返しますか? 何も計算されていないので、null を返しますか? そして、それを返したら (それが何であれ)、有効な値が返されたかどうかを確認するために、親メソッドで別の try/catch を実行する必要がありますか? そうでない場合は、ユーザーに何らかのフィードバックが提供されていることを確認してください。
テーブルの両側で、値をまったく返さないという議論を聞いたことがありますが、代わりに、計算された値をポインターまたはグローバル変数として設定し、代わりにメソッドからエラーコードのみを返し、(親メソッドで) エラーコードをそれに応じて処理するだけです。 .
これに対するベストプラクティスまたはアプローチはありますか? これを処理する最善の方法について詳しく知るためにアクセスできる優れたリソースはありますか?
明確化のための更新
次のコードを検討してください。
public void main()
{
int myValue = getMyValue();
MyUIObject whatever = new MyUIObject();
whatever.displayValue(myValue); // Display the value in the UI or something
}
public Integer getMyValue()
{
try
{
// Calculate some value
} catch (exception e) {
// ??
}
return value;
}
メソッドを呼び出して int 値を取得し、それを返します。に戻ってmain()
、この場合はログに表示するなど、値を使用して何かを行います。通常、ユーザーの UI に値を表示します。
とにかく、 で例外がキャッチされた場合はgetMyValue()
返されvalue
ますが、null ですか? その時どうなるmain()
?それが有効な値であるかどうかもテストする必要がmain()
ありますか?
それに応じてエラーを処理し、続行するプログラムが必要です。getMyValue()
以下の誰かが、メソッド内から UI に適切な情報を表示することを提案しました。潜在的な問題が 2 つあります。
- ビジネス ロジックと (この場合は) UI のロジックを混在させているようです。
MyUIObject
関数内からアクセスできるように、getMyValue()
または何かへの参照を渡す必要があります。上記の単純な例では大したことではありませんが、 で発生したことに基づいて更新または変更する必要がある多数の UI 要素がある場合、getMyValue()
それらすべてを渡すのは少し面倒かもしれません...
このすべての基本についてたくさん読んだことがありますが、上記の状況に対する直接的な答えを見つけることができないようです。助けや洞察に感謝します。