在我的方法中,下面是伪代码,在一行中创建了两个异常(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首先触发,还是代码需要重新编写?
答案 0 :(得分:4)
尝试在内部块中捕获更一般的异常。 如果捕获的异常是Numberof NumberFormatException,则将其传递给外部块或在那里返回错误消息。
答案 1 :(得分:0)
问题是正在读取的csv文件有额外的逗号来阻止文件被锯齿状;我依赖打印到文件的想法。
异常对于预期的输入是正确的,但现在我抓住了NumberFormatException
和IndexOutOfBoundsException
在inntermost catch中使用multiatch来获得这种额外的可能性。