如何以及在何处解释Java错误消息";3“;是否从java.lang.String返回?

如何以及在何处解释Java错误消息";3“;是否从java.lang.String返回?,java,exception-handling,runtime-error,Java,Exception Handling,Runtime Error,我正在运行一个Java程序,该程序将BufferedReader输入解析为分隔字符串,以便输出到文件。在成功地从源文件读取24行并将它们保存到目标文件后,我得到一条错误消息3(使用catch中的getMessage())方法,并与“读取文件的下一行”try配对 当我将捕捉更改为以下内容时 catch (Exception e) { System.err.println("Error: " + e.getMessage().getClass().getName())

我正在运行一个Java程序,该程序将
BufferedReader
输入解析为分隔字符串,以便输出到文件。在成功地从源文件读取24行并将它们保存到目标文件后,我得到一条错误消息
3
(使用
catch
中的
getMessage()
)方法,并与“读取文件的下一行”
try
配对

当我将捕捉更改为以下内容时

    catch (Exception e)
    {
        System.err.println("Error: " + e.getMessage().getClass().getName());
    }
catch
导致返回
错误:java.lang.String
,但没有进一步解释。文件中的错误字符?铸造不正确?正如另一条评论所暗示的那样,这是一个边界之外的地方吗?如何从这个错误中提取更多信息,还有其他想法吗


我已经在十六进制编辑器中查看了输入文件,行之间没有意外的EOF或null字符,输入数据在十六进制或文本编辑器中按预期显示,我找不到任何关于如何解释
3
错误消息的文档,甚至找不到关于如何确定它是OS还是Java异常的文档

尝试使用
e.printStackTrace()
而不是使用
e.getMessage()
。这将显示异常的全部细节,并将为您指明正确的方向

catch (Exception e)
{
    System.err.print("Error: ");
    e.printStackTrace();
}
您也可以尝试:

catch (Exception e)
{
    System.err.println("Error: " + e);
}

尝试使用
e.printStackTrace()
,而不是使用
e.getMessage()
。这将显示异常的全部细节,并将为您指明正确的方向

catch (Exception e)
{
    System.err.print("Error: ");
    e.printStackTrace();
}
您也可以尝试:

catch (Exception e)
{
    System.err.println("Error: " + e);
}

我从来没有听说过java会给出没有帮助的异常,您是否正在使用任何库将
e.getClass().getName()
添加到打印的字符串中,以便知道它是什么类型的错误。这将为您提供更多信息。很可能会引发数组索引越界异常,索引为3??@RichardTingle:
import java.util.*
导入java.io.*
导入java.nio.file.*
导入java.util.regex.*
导入java.lang.StringBuilder
@srkavin-我会检查我的数组,但是我已经测试过的数组(在不写入文件时可以很好地打印到控制台)包含5个元素。我从来没有听说过java会给出没有帮助的异常,您是否使用任何库将
e.getClass().getName()
中的内容添加到打印的字符串中,以便知道它是什么类型的错误。这将为您提供更多信息。很可能会引发数组索引越界异常,索引为3??@RichardTingle:
import java.util.*
导入java.io.*
导入java.nio.file.*
导入java.util.regex.*
导入java.lang.StringBuilder
@srkavin-我会检查我的数组,但是我已经测试过的数组(在不写入文件时可以在控制台上很好地打印)包含5个元素。
printStackTrace()
方法是void type one,因此您甚至不会编译后一个版本不好,因为它只会显示消息(通常是无用的).我只是把这些都扔进了我的渔获物中。:)ArrayIndexOutOfBounds:3,甚至是代码的行号。正是我所需要的。
printStackTrace()
方法是void type one,因此您的代码甚至不会编译后一个版本并不好,因为它只会显示消息(这通常是无用的)。我只是在捕获中抛出了所有这些。:)ArrayIndexOutOfBounds:3,甚至是代码的行号。正是我需要的。