1

重複の可能性:
例外またはエラーコード
エラーコードを使用するのが適切なのはいつですか。

Cなどの言語で使用されているエラーコードをいつ使用する必要があるのか​​、いつ例外を使用するのか疑問に思っています。次の例を考えてみましょう。getData()関数は、成功した場合はデータの文字列を返し、そうでない場合はエラーメッセージを返す必要があります。エラーをどのように報告する必要がありますか?例外またはエラーメッセージとして?

public int fo(arguments) {
    //some code
    String data = "";
    String errMsg = "";
    boolean rc = getData(arguments, data, errMsg);
    // do something based on the results of getData()
    // and report error messages in case of errors
}

次の実装についてどう思いますか。

boolean getData(some arguments, String data, String errorMessage){
    {
        //check arguments for null pointers or invalid values and return error
        //message
        errorMessage = "Invalid Arguments";
        return false;
    }
    {
        //check for other errors
        errorMessage = "Some Error";
        return false;
    }
    // no error, return valid data
    data = "some valid data";
    return true;
}

私の知る限り、フロー制御に例外を使用するべきではありません。エラーコードと例外の適切な使用についてコメントしていただけますか?

4

1 に答える 1

4

まず第一に、引数はJavaで値によって渡されるため、この例は機能しません。したがって、の値を変更してもerrorMessage、その変更はメソッドの外部には表示されません。

しかし、これを修正してエラーコードを正しく返すと仮定すると、質問は、エラーを処理する場所に要約されます。

catch例外は、その特定のタイプの例外を処理するブロックが見つかるまで、コールスタック上で自動的に「バブルアップ」します。これにより、はるかに高いレベルでそれらを処理する機会が得られますが、エラーコードを返す場合は、直接の呼び出し元ですぐにそのエラーコードを処理する必要があります(これにより、呼び出し元に別のエラーコードが設定される可能性があります。オンにすると、このパターンが表示されたら、代わりに例外をスローする必要があると確信できます)

于 2012-12-20T00:16:06.320 に答える