黑马程序员技术交流社区
标题:
异常问题,与想象的偏离..
[打印本页]
作者:
章闽
时间:
2012-10-17 19:56
标题:
异常问题,与想象的偏离..
public class Exception3 {
public static int Sum(int n){
if(n<0)
throw new IllegalArgumentException("n应该为整数");
int s=0;
for(int i=0;i<=n;i++) s+=i;
return s;
}
public static void main(String args[]){
try{
int n=Integer.parseInt(args[0]);
System.out.println(Sum(n));
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("命令行为:"+"javaException3<number>");
}
catch(NumberFormatException e2){System.out.println("参数<number>应为整数!");}
catch(IllegalArgumentException e3){System.out.println("错误参数:"+e3.toString());}
finally{System.out.println("程序结束");}
}
}/*如果运行改程序的命令行输入为:java Exception3
屏幕显示为:java Exception3<number>
程序结束
如果命令行输入为:java Exception3 -4
屏幕显示为:
参数错误:java.long.IllegalAgumentException:n 应该为整数!
程序结束
可是程序运行时 抛出和捕获异常根本不起作用*/
作者:
王威
时间:
2012-10-17 20:27
本帖最后由 王威 于 2012-10-17 20:29 编辑
你这里异常起了作用的
1、当你在命令行输入 java Exception3 也就是运行文件的时候,
执行 int n=Integer.parseInt(args[0]);的时候 args[0] 没有内容,肯定会抛数组越界异常,因为你进行了捕捉
所以执行 catch(ArrayIndexOutOfBoundsException e) 里面的内容:System.out.println("命令行为:"+"javaException3<number>");
然后,执行finally里面的内容,所以输出“程序结束”!
所以当你命令行输入java Exception3 时会输出:
java Exception3<number>
程序结束
2、当你输入java Exception3 -4 时,在你使用-4作为参数时,执行到Sum(int n)方法时,因为n<0
所以程序会抛出 IllegalArgumentException 异常,而正好你在下面对该异常进行了捕捉,所以会执行 catch(IllegalArgumentException e3)
System.out.println("错误参数:"+e3.toString()); 这一句,打印出:java.long.IllegalAgumentException:n 应该为整数!
最后执行finally里面内容,输出“程序结束”
所以当你命令行输入 java Exception3 -4 时会输出:
java.long.IllegalAgumentException:n 应该为整数!
程序结束
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2