-1

コードが正しくコンパイルされない理由がわかりません.catch ブロックに到達するまでコードを調べることができます。メッセージを表示して動作するので、エラーをキャッチしていることがわかります。ただし、同じ場所に同じエラーがあると言ってプログラムを終了します。何が間違っているのかわかりません。助けてくれてありがとう!!

class Verification {

String detAccess(String[] pL, String[] uL, String pass, String user) {
    int pos = 0;
    String access = "";
    try {
        for (int i=0; !user.equals(uL[i]); i++)
            pos++;
    } catch (ArrayIndexOutOfBoundsException exec) {
        System.out.println("Username doesn't exist.");
        throw exec;
    }
    if(pass.equals(pL[pos])) {
        access = "MEMBER";
    } else {
        System.out.println("Incorrect password.");
        access = "DENIED";
    }

    return access;        
}

}

4

6 に答える 6

7

例外を再スローしています - throw exec;

于 2013-07-27T18:56:38.253 に答える
1

例外を再スローしています。

別物:

if(pass.equals(pL[pos])) {
    access = "MEMBER";

存在しないインデックスでパスワードリストをチェックしようとするため、例外を再スローしなくても例外が再び発生します。

于 2013-07-27T19:00:03.953 に答える
0

2 つの問題:

  1. 例外をキャッチして再スローしています。「処理する」場合は、再スローする必要はありません。

  2. 「例外処理」を使用して、プログラムを通じて「通常の制御フロー」を管理しています。これは一般的に「悪いスタイル」と見なされます。反復を制御できず、何か他のものを見て「完了」と判断できませんか?

    更新:つまり、nioの例

于 2013-07-27T18:57:31.467 に答える
0

実行できる場合、コードは正しくコンパイルされています。プログラムがエラーで終了するのは、例外をスローしているためです。

throw exec;

例外を正常にキャッチしましたが、再度スローしました。他に何もキャッチされない場合、プログラムはエラーで終了します。

于 2013-07-27T18:57:44.703 に答える
0

例外をスローしています。例外を処理するポイントは、続行しないことです。

于 2013-07-27T18:57:21.840 に答える