1

IOException をスローする最初の方法がこれを行うためのより良い方法であるかどうか疑問に思っています。

this のようですが、IOException をトリガーしてテストすることはできません。

public static String inputStr (String prompt) throws IOException
{
    String inputStr = "";
    System.out.print(prompt);
    inputStr = stdin.readLine();
    if (inputStr.length() == 0)
    {
        System.out.println("Error! Enter valid field!");
        inputStr(prompt);
    }

    return inputStr;
}

またはメソッド内。

public static String inputStr (String prompt) 
{
    String inputStr = "";
    System.out.print(prompt);

    try
    {
        inputStr = stdin.readLine();
        if (inputStr.length() == 0)
        {
            System.out.println("Error! Enter valid field!");
            inputStr(prompt);
        }
    } catch (IOException e)
    {
        System.out.println("Error! Enter valid field!");
        inputStr(prompt);
    }
    return inputStr;
}

スローされた場合に備えて、カスタマイズされたメッセージを含める必要がありますか? この質問Java - What throws an IOExceptionについて、何が起こるかテストできません。

実際に機能するかどうかわからないので、これがコードレビューであるべきかどうかはわかりません。

4

2 に答える 2

5

IOException がスローされた場合stdin.readLine()、stdin から再度読み取りを試みても成功しません。別の IOException が発生し、2 番目のスニペットが無限再帰ループに入り、StackOverflowError で終了します。

于 2013-10-31T12:32:11.987 に答える
3

IOException をトリガーしてテストできます。これをifステートメントに追加しました:

throw new IOException("Testing Failure");

例外をどのように処理するかに関しては、現在のメソッドで例外を処理するか、メソッドと呼ばれるものに例外を渡したいかによって異なります。

于 2013-10-31T12:31:56.533 に答える