日期:2014-05-20  浏览次数:20633 次

关于接口的3个简单问题~~
1、如果发生异常,不是会直接转到catch代码块嘛,怎么什么样的程序会发生多种异常呢??

2、如果当有几个异常的时候,为什么catch代码块必须从最下面的派生类开始,然后逐步到层次最高的超类以次排序?这里有什么不同?

3、
Java code
public class TestTryCatch {
    public static void main(String[] args){
        int i = 1;
        int j = 0;
        try{
            System.out.println("Try block entered " + "i = " + i + " j = " + j);
            System.out.println(i/j);
            System.out.println("Ending try block");
        }catch(ArithmeticException e){
            System.out.println("Arithmetic exception caught");
        }
        
        System.out.println("After try block");
        return;  //这里放return有什么意义吗?什么情况下要在main( )方法里放return??
    }
}


------解决方案--------------------
前两个问题仔细看看书应该就能解决,具体我倒是讲不明白。第三个我也不知道,关注一下。初学者,共同学习
------解决方案--------------------
前两个问题建议看书,书上讲比较清楚
第三个问题我个人觉得就是保证程序的完整性,main无返回值类型方法,这里return个空值,没有任何意义
------解决方案--------------------
1、在catch里又发生异常,就会出现多种异常;或者是往方法外面抛出异常,而不是用try catch语法
2、如果父异常在前面,那么子异常就永远捕获不到了
3、在方法(所有返回类型为void的方法)最后加return;都没有意义
------解决方案--------------------
1、如果发生异常,不是会直接转到catch代码块嘛,怎么什么样的程序会发生多种异常呢??
异常並不一定要扑捉,你也可以向調用你的上级抛出,让它去处理这个异常.
当某个方法,调用了很多會抛出不同异常的方法的时候,它就會發生多种异常了~!

2、如果当有几个异常的时候,为什么catch代码块必须从最下面的派生类开始,然后逐步到层次最高的超类以次排序?这里有什么不同?
因為一旦找到了合适的处理catch,程序将会停止,而转向执行符合的catch中的语句,如果你将层次最高的超类放在最前面,异常出來的時候,馬上就會被它扑捉,而永遠無法到達下面的具體類型.


3、 在返回值为void的方法中,return只有一個作用,那就是跳出方法,不再執行return以下的語句.
------解决方案--------------------
1、如果发生异常,不是会直接转到catch代码块嘛,怎么什么样的程序会发生多种异常呢??

你的代码块中调用的方法可能抛出多种异常,这些抛出的异常必须全部被捕获

2、如果当有几个异常的时候,为什么catch代码块必须从最下面的派生类开始,然后逐步到层次最高的超类以次排序?这里有什么不同?
这个和你定义你类与子类的意思可以说差不多,比如说EXception类可以处理各种各样的抛出型异常,但是如果你想获取更加明确的异常信息,那么你就必须定义Exception的子类了,因为它可以更加明确地告诉你哪里错了,因为什么错的,所以必须从最下面的派生类开始,逐步到层次最高的超阶级类

3.return; //这里放return有什么意义吗?什么情况下要在main( )方法里放return??
这个没有必要加return,对于一般的方法,需要return来返回,但是public static void main一般情况下是由JVM来调用的,会自动返回,不需要加.但是一种情况除外,即,测试时使用的main方法可能需要加
------解决方案--------------------
每天进步一点点……
------解决方案--------------------
dui对
------解决方案--------------------
抛异常有两种形式一种是虚拟机替你抛异常 例如 你写了 a=3/0;这样的语句
另一种是throw new Exception()
异常后会执行与异常最先匹配的catch 所以会Exception 一般放在最后

return; 放在你写那里没有意思
return用来结束方法 或者放回某个必要的参数
------解决方案--------------------
第一道题问什么我都没搞清楚郁闷
第二道题我个人理解是越是派生下来的继承类肯定比它的父类功能来的详细嘛,所以编译器的机制先从子类找,再找父类,不知道对不对
第三道题不放return也可以嘛,再说也没返回值嘛。函数大多数都有返回值的,就是return返回的
------解决方案--------------------
1、如果发生异常,不是会直接转到catch代码块嘛,怎么什么样的程序会发生多种异常呢??
//不知道,好象还没遇到过一次能catch到好几个异常的情况。

2、如果当有几个异常的时候,为什么catch代码块必须从最下面的派生类开始,然后逐步到层次最高的超类以次排序?这里有什么不同?

//更详细

3、

Java code

public class TestTryCatch { public static void main(String[] args){ int i = 1; int j = 0; try{ System.out.println("Try block entered " + "i = " + i + " j = " + j); System.out.println(i/j); System.out.println("Ending try block"); }catch(ArithmeticException e){ System.out.println("Arithmetic exception caught"); } System.out.println("After try block"); return; //这里放return有什么意义吗?什么情况下要在main( )方法里放return?? } }