【问题标题】:How to write IOException handler如何编写 IOException 处理程序
【发布时间】:2013-11-11 11:05:35
【问题描述】:

我想知道抛出 IOException 的第一种方法是不是更好的方法,

像这样,但我无法触发 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我无法测试会发生什么。

不确定这是否应该是 codereview,因为我不确定它是否真的有效。

【问题讨论】:

    标签: java error-handling try-catch ioexception


    【解决方案1】:

    如果stdin.readLine() 抛出 IOException,尝试再次从标准输入重新读取将不会成功:您将获得另一个 IOException,使您的第二个 sn-p 进入无限递归循环,并以 StackOverflowError 结束。

    【讨论】:

      【解决方案2】:

      您可以触发 IOException 进行测试。刚刚在你的 if 语句中添加了这个:

      throw new IOException("Testing Failure");
      

      就你如何处理异常而言,这实际上取决于你是希望当前方法处理它还是只想将它传递给调用该方法的任何方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-13
        • 2017-08-02
        相关资源
        最近更新 更多