2

booleanDB操作を行い、成功/失敗の値を送信する機能を持っています。失敗したと仮定して、失敗理由を戻り値として送りたい。

今のところ、戻り値を文字列として定義しています。失敗の場合は戻り"failure: reason"、成功の場合は戻り"success"ます。しかし、これは良い習慣ではありません。

4

7 に答える 7

2

失敗すると、checked をスローできますcustom Exception

public class DBException extends Exception{
  public DBException(String exp){super(exp)}
  ...
}
于 2012-10-01T06:27:13.730 に答える
0

エラー メッセージを static final Strings にして、他のクラスがアクセスできるようにすることができます。例:

public static final String DB_FAILURE_REASON1 = "failure: reason1";

それ以外の場合は、Exception のサブクラスを作成し、特定の理由を Exception として保存するかmsg、特定の失敗理由のためにサブクラスのサブクラスをさらに作成します。

public class MyDBFailure extends Exception

メソッドに a を追加throwsします。

public String myDBMethood() throws MyDBFailure
于 2012-10-01T06:28:07.883 に答える
0

理想的には、例外をスローする必要があります (既存の例外がニーズに合わない場合は、例外をカスタマイズできます)。あなたのアプローチはよりCに似ています。

本当に例外を使用できない場合 (これにより、コードを使用して何をすべきかを決定するユーザーが提供されます)、列挙に頼って、すべてではないにしても、いくつかの可能な結果を​​リストすることができます。ただし、このようなアプローチは非常に面倒な場合があることに注意してください。

于 2012-10-01T06:28:53.063 に答える
0

Result戻り値と getter (またはオーバーロードtoString()メソッド)を含む文字列フィールドを持つ独自のクラスを作成します。

 public class Result {
     String message;

     public Result(String message) {
          this.message = message;

     }

     public String toString() {
          return message;
     }
 }

別のオプションは、列挙型を使用することです。

于 2012-10-01T06:28:56.287 に答える
0

失敗時に例外をスローし、try-catch ステートメントで関数を呼び出すことができます。

文字列型のグローバル変数を作成し、失敗時にそれを設定して false を返すと、グローバル変数からエラー メッセージを取得できます。

最初の要素が戻り値で、2 番目の要素がエラー メッセージである配列を返すことができます。

私の個人的なお気に入りは、2 番目のオプションです。

于 2012-10-01T06:28:57.053 に答える
0

これはあなたが使用するものですthrow exception。メソッドのシグネチャを変更して、戻り値をブール値に設定できます。次に、カスタム Exception クラスを作成します。

public class MyCustomException extends RuntimeException {
    // define error code, error message etc.
    // create getters & setters
}

その後、失敗の理由を見つけたら、次のようにします。

if (some_failure_reason == true) {
    throw new MyCustomException(error_code) ;
}

コントローラー (またはサービス) で、例外をキャッチします。

try {
    // call the method in question
} catch (MyCustomException mce) {
    if(mce.getErrorCode() == some_error_code) {
        // do stuff
    }
}
于 2012-10-01T06:29:21.183 に答える
0

CustomException戻りエラー コード コードと共に使用します。エラーの理由を特定するより良い方法は、エラー状態が発生するたびに列挙型で例外を構築できるように、列挙型内で定義することです。

また、このパラダイムを拡張して、必要に応じて単一の例外で複数のエラー コードを処理することもできます。

エラー状態が検出されるたびに、のインスタンスを作成しCustomExceptionてスローします。

  //Error Condition detected
  if(input<10)
  throw new CustomException("Invalid Input it should be greater 
    than 10 ", ErrorCode.ErrorCode1);

以下のような複数のエラー条件を使用できます。

  if(intput>100 && input < 1000)//Just a sample case.
   throw new CustomException("Invalid Input it should be not be greater
     than 100 and less than 1000 ", EnumSet.of(ErrorCode.ErrorCode1,
     ErrorCode.ErrorCode2));

のソースCustomException:

public class CustomException extends Exception {

    private EnumSet<ErrorCode> errorCodes;// You can also maitain multiple
                                            // error codes for same
                                            // exception

    public CustomException(String message, ErrorCode errorcode) {
        super(message);
        this.errorCodes = EnumSet.of(errorcode);
    }

    public CustomException(String message, EnumSet<ErrorCode> errorcode) {
        super(message);
        this.errorCodes = EnumSet.copyOf(errorcode);
    }

}
public enum ErrorCode {
    ErrorCode1(1, "First Error"), ErrorCode2(2, "Second Error");
    int code;
    String reason;

    private ErrorCode(int code, String reason) {
        this.code = code;
        this.reason = reason;
    }
}
于 2012-10-01T06:30:10.543 に答える