黑马程序员技术交流社区
标题:
java异常问题
[打印本页]
作者:
张甲甲
时间:
2013-5-16 19:58
标题:
java异常问题
public class ExceptionTest {
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("程序结束");}
}
}
在myeclipse中直接运行的话
输出为:java Exception3<number>
程序结束
如果加上main方法的参数运行
比如 -4
输出为: 参数错误:java.long.IllegalAgumentException:n 应该为整数!
程序结束
可是程序运行时 为什么抛出和捕获异常根本不起作用
作者:
紫衣侯
时间:
2013-5-17 23:14
System.out.println("命令行为:"+"javaException3<number>"); 引号
作者:
breeze
时间:
2013-5-18 08:10
首先, 你定义的sum方法的名字首字母应该是小写, 你抛出的异常被捕获到了
1. 因为主方法要从命令行接收一个参数, 如果你没有在传入参数, 会执行下面这条catch语句
catch(ArrayIndexOutOfBoundsException e){
System.out.println("命令行为:"+"javaException3<number>");
}
输出结果是:
命令行为:javaException3<number>
程序结束
2. 如果你传入一个负数, 会执行你在sum中抛出的异常
if (n < 0)
throw new IllegalArgumentException("n应该为整数");
下面的catch处理这个异常
catch (IllegalArgumentException e3) {
System.out.println("错误参数:" + e3.toString());
输出结果是:
错误参数:java.lang.IllegalArgumentException: n应该为整数
程序结束
作者:
曹睿翔
时间:
2013-5-19 07:48
如果问题已解决请再次编辑,改为以解决,方便大家看帖,没有就继续追问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2