class Demo{
public static void main(String args[]){
int x=3,n=5,d=0;
int ar[]=new int[3];
String name="Neno";
System.out.println("Start main");
try{
ar[x]=name.charAt(n)/d; //n=5
}catch(StringIndexOutOfBoundsException e){
System.out.println("String index Error");
}catch(RuntimeException e){
System.out.println("Any runtime Error");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Array index Error");
}catch(ArithmeticException e){
System.out.println("Arithmetic Error");
}
System.out.println("End main");
}
}
我使用此代码过滤了一些异常,但代码中有错误。ArrayIndexOutOfBounds
它说要删除and的捕获子句ArithmeticException
。是因为catch-clauses的顺序错误出现了吗?当我像这样更改顺序时...
class Demo{
public static void main(String args[]){
int x=3,n=5,d=0;
int ar[]=new int[3];
String name="Niroth";
System.out.println("Start main");
try{
ar[x]=name.charAt(n)/d; //n=5
}catch(StringIndexOutOfBoundsException e){
System.out.println("String index Error");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Array index Error");
}catch(ArithmeticException e){
System.out.println("Arithmetic Error");
}catch(RuntimeException e){
System.out.println("Any runtime Error");
}catch(Exception e){
System.out.println("Any Error");
}
System.out.println("End main");
}
}
此顺序没有错误。谁能解释我这个问题的原因?