黑马程序员技术交流社区
标题:
异常的问题
[打印本页]
作者:
郑强强
时间:
2012-4-10 22:15
标题:
异常的问题
public class a15
{
public static void main(String[] args)
{
int arr[]={4,12,87,21,6,18};
int den[]={2,0,7,0,61,0};
double sum=0.0;
for(int i=0;i<=6;i++)
{
/*if((den[i]==0)||(i>den.length-1))
{
System.out.println("程序执行有误");
break;
}
else
{
sum+=(double)arr[i]/den[i];
System.out.println("sum="+sum);
}*/
try
{
sum+=(double)arr[i]/den[i];
System.out.println("sum="+sum);
}
catch(ArithmeticException e)
{
System.out.println("除数为0");
}
catch (ArrayIndexOutOfBoundsException e)
{
System.out.println("超出数组大小");
}
}
System.out.println("Hello World!");
}
}
在网上偶然看到的程序,为什么除数为0时,没有抛出异常,自己没有想明白??各位大虾看看吧
作者:
未长法
时间:
2012-4-10 22:51
ArithmeticException 和ArithmeticException 都是RuntimeException 的子类,可以不抛出异常。如果出现不错,程序将停止,让你修改。
异常有两种:
编译时被检测异常
该异常在编译时,如果没有处理(没有抛也没有try),编译失败。
该异常被标识,代表这可以被处理。
运行时异常(编译时不检测)(RuntimeException 及其子类)
在编译时,不需要处理,编译器不检查。
该异常的发生,建议不处理,让程序停止。需要对代码进行修正。
作者:
莫运飞
时间:
2012-4-10 23:55
class a15
{
public static void main(String[] args)
{
int arr[]={4,12,87,21,6,18};
int den[]={2,0,7,0,61,0};
double sum=0.0;
for(int i=0;i<=6;i++)
{
/*if((den
==0)||(i>den.length-1))
{
System.out.println("程序执行有误");
break;
}
else
{
sum+=(
int
)arr
/den
;
System.out.println("sum="+sum);
}*/
try
{
sum+=(i
nt
)arr
/den
;
System.out.println("sum="+sum);
}
catch(ArithmeticException e)
{
System.out.println("除数为0");
}
catch (ArrayIndexOutOfBoundsException e)
{
System.out.println("超出数组大小");
}
}
System.out.println("Hello World!");
}
}
你用的是double型,算出的是无穷大,是不会抛异常的,你把 double改成int 就会马上抛异常了。
作者:
胡元
时间:
2012-4-11 12:05
楼上真是一针见血!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2