黑马程序员技术交流社区
标题:
throw问题
[打印本页]
作者:
刘晓康
时间:
2012-4-4 22:17
标题:
throw问题
public class ExceptionDemo4 {
/**
* @param args
*/
public static void main(String[] args) throws ArithmeticException {
// TODO Auto-generated method stub
Demo d=new Demo();
d.div(4, 0);
System.out.println("asd");//为什么抛异常 不执行呢?
}
}
class Demo
{
int div(int a,int b)// throws ArithmeticException
{
if(b==0)
throw new ArithmeticException("出错了");
return a/b;
}
}
Exception in thread "main" java.lang.ArithmeticException: 出错了
at Demo.div(ExceptionDemo4.java:21)
at ExceptionDemo4.main(ExceptionDemo4.java:10)
为什么不执行System.out.println("asd");//
作者:
胡元
时间:
2012-4-4 22:27
class Demo
{
int div(int a,int b)// throws ArithmeticException
{
if(b==0)
throw new ArithmeticException("出错了");
return a/b;
}
}
int div(int a,int b)后面生命的异常不要加注释符,你加了注释符虚拟机就不会读取它
那么你下面就相当于还没声明异常就直接抛出异常了!而且,如果在这个程序里主函数
已经是最终调用者了,它把一场抛给虚拟机,虚拟机就把程序停了,下面的代码当然就
读不出来!
作者:
孙利川
时间:
2012-4-4 22:43
本帖最后由 孙利川 于 2012-4-4 23:22 编辑
class Demo
{
int div(int a,int b)// throws ArithmeticException
{
if(b==0)
throw new ArithmeticException("出错了");
return a/b;
}
}
回复二楼:int div(int a,int b)后面生命的异常不用写,因为ArithmeticException异常是RuntimeException的子类,不用声明。
楼主,这样的结果很正常呀,在程序执行的预料之中呀,d.div(4,0)这句代码调用类Demo的div方法,抛出异常,其后的代码自然就不会执行了,程序到此停止呀。
作者:
葛尧
时间:
2012-4-4 22:43
// ArithmeticException 这里注释不注释都没关系,这个异常没自定义,父类是RuntimeException 所以不声明也没关系
但是异常抛出给了调用者,div(4,0)了 这里是主函数,并且没有try catch()所以就又抛给虚拟机了,所以程序就停掉了
没法执行到下一句了
作者:
刘_浩
时间:
2012-4-5 01:12
因为在抛出异常后,程序就停止了,所以后面的就不会运行了。
作者:
陈苓
时间:
2012-4-5 02:03
你在主函数上声明了异常,程序在执行的过程中发现除数为0,就发生了异常,这时程序就结束了。下面的代码就执行不了,而且执行也没有意义,如果你要想让他执行必须try,finally 把你需要执行的语句放在finally中的语句一定会被执行,看下面代码
class Demo
{
int div(int a,int b)throws Exception
{
return a/b;
}
}
class FinallyDemo
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int num = d.div(4,0);
System.out.println("num="+num);
}
catch (Exception e )
{
System.out.println(e.toString());
//return;
System.exit(0);//退出jvm。
}
finally
{
//定义的是一定会被执行的代码。
System.out.println("finally");
}
System.out.println("Hello World!");
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2