黑马程序员技术交流社区

标题: 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