我是否有点不确定:
try{
worldHeight = Integer.parseInt(JOptionPane.showInputDialog("How many cells high will the world be?: "));
}
catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "You have not entered a valid number");
}
try{
worldWidth = Integer.parseInt(JOptionPane.showInputDialog("How many cells wide will the world be?: "));
}
catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "You have not entered a valid number");
}
会做同样的事情:
try{
worldHeight = Integer.parseInt(JOptionPane.showInputDialog("How many cells high will the world be?: "));
worldWidth = Integer.parseInt(JOptionPane.showInputDialog("How many cells wide will the world be?: "));
}
catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "You have not entered a valid number");
}
基本上希望用户输入一个数字,如果不是数字异常被抛出并且用户被重新询问一个数字?
由于
答案 0 :(得分:3)
在您的第一个示例中,使用两个单独的try...catch
块,似乎在抛出异常时,您只是显示一个对话框,而不是停止控制流。
因此,如果第一个try...catch
中存在异常,则控制将继续到第二个try...catch
,并且将要求用户输入第二个号码,无论她是谁没有正确输入第一个数字。
在第二个示例中,如果第一个try...catch
中存在异常,则不会向用户显示第二个问题,因为控件不会在try
块内继续,而是在catch
块的结束。
答案 1 :(得分:0)
是的,这几乎是一样的。在try catch块中,它只会在发生错误的位置停止执行。如果它在第一行抛出错误,则第二行永远不会执行第二行。这是唯一的区别,在第一个选项中,无论第一行(输入)是否抛出错误,都将执行第二行(输入)。
答案 2 :(得分:-1)
您还可以尝试以下代码
{
int arr[]=new int[5];
try
{
try
{
System.out.println("Divide 1");
int b=23/0;
}
catch(ArithmeticException e)
{
System.out.println(e);
}
try
{
arr[7]=10;
int c=22/0;
System.out.println("Divide 2 : "+c);
}
catch(ArithmeticException e)
{
System.out.println("Err:Divide by 0");
}
catch(ArrayIndexOutOfBoundsException e)
//ignored
{
System.out.println("Err:Array out of bound");
}
}
catch(Exception e)
{
System.out.println("Handled");
}
}
有关详细信息,请访问:Multiple try-catch in java with example