错误的阻止块运行

时间:2013-08-27 09:50:31

标签: java error-handling

在我的方法中,下面是伪代码,在一行中创建了两个异常(ArrayIndexOutOfBounds和NumberFormatException)。

在此行上,输入文件从X + Y列更改为X列。

首先捕获外部捕获并在内部捕获本身之前停止程序。

我需要内部循环来捕获异常,因为我正在使用它来将数据打印到文件中。

try{
    Initialize local variables
    //Includes getting numerical strings from input fields
    //Hence NumberFormatException to check for correct input
    try{
        get file name
        //hence FileNotFoundException
        try{
            read line, get column A, B and C 
            //Column B is at an index larger than X
            //hence ArrayIndexOutOfBoundsException
        }catch(ArrayIndexOutOfBoundsException){
            print data to file
        }
    } catch(FileNotFoundException){
        error message
    }
} catch(NumberFormatException){
    error message
    //error caught here, checks for whether
    //numbers were entered in the required fields
}

有没有办法强制内部catch首先触发,还是代码需要重新编写?

2 个答案:

答案 0 :(得分:4)

尝试在内部块中捕获更一般的异常。 如果捕获的异常是Numberof NumberFormatException,则将其传递给外部块或在那里返回错误消息。

答案 1 :(得分:0)

问题是正在读取的csv文件有额外的逗号来阻止文件被锯齿状;我依赖打印到文件的想法。

异常对于预期的输入是正确的,但现在我抓住了NumberFormatExceptionIndexOutOfBoundsException在inntermost catch中使用multiatch来获得这种额外的可能性。