当前位置: 代码迷 >> J2SE >> 新人,关于try catch的有关问题
  详细解决方案

新人,关于try catch的有关问题

热度:33   发布时间:2016-04-23 20:35:31.0
新人,关于try catch的问题
分析下面一段话最后执行结果,不是很理解求大神指教
public class Test {
public static void main(String[] args) throws Exception{
try{
throw new Exception();
}catch(Exception e){
System.out.println("Caught in main()");
}
System.out.println("nothing");
}
}
------解决方案--------------------
结果是不是catch in main()   nothing 啊
------解决方案--------------------
引用:
首先程序从main函数开始先进入try然后运行throw new Exception();(为抛出一个异常)但是运行到这我没看出来会出啥异常的可能性?
然后就是捕获异常的条件catch,当发生异常的时候输出Caught in main(),如果没出异常就是输出nothing。
try内的代码为执行内容  如果出现异常就为执行catch里面的,然后结束    如果没有异常最后就是执行try—catch之后的语句了
我看错了       你这个程序,肯定会抛出异常   
------解决方案--------------------
用try ..catch捕捉异常,因为try内抛出一个异常,被catch扑捉到,所以打印出catch in main(),又因为在main()那里已经申明抛出异常,程序继续运行,所以又打印nothing
------解决方案--------------------

public class TestException {

    public static void main(String[] args) throws Exception {

        System.out.println("main() start"); // 1)顺序执行

        try {

            System.out.println("try() start"); // 2)顺序执行

            throw new Exception(); // 3)抛出异常,跳到catch语句

            System.out.println("try() end"); // 永远也走不到这里来

        } catch (Exception e) {

            System.out.println("Caught in main()"); // 4)接收到异常,顺序执行

        }

        System.out.println("nothing"); // 5)顺序执行

    }
}


main() start
try() start
Caught in main()
nothing

------解决方案--------------------
顶楼上,方法上的throws意思是“这个方法中有了异常就往外抛”。
try......catch 是截获这个异常,不让抛出去了,在catch中处理了