import java.io.*;
public class Test 
{
public static void main(String[] args)
{
try
{
throwChecked(3);
throwRuntime(3);  //感觉这条没执行,,,
}
catch (RuntimeException re)
{
System.out.println(re.getMessage());
}
catch(Exception e)
{
System.out.println(e.getMessage());
}

}
public static void throwChecked(int a) throws Exception
{
if (a > 0)
{
throw new Exception("ta > 0 ,exception");
}
}
public static void throwRuntime(int a)
{
if (a > 0)
{
throw new RuntimeException("re > 0,Runtime exception");
}
}
}一个try 块只能 一行代码的错误? 我单步调试了一下,发现下面那个 throwRuntime 压根就没进去。直接跳出到程序最后了。

解决方案 »

  1.   

    throwChecked(3);抛出异常当然会被catch,不会再往下执行了,如果没有finally,catch执行完就跳出方法了,
    如果想throwRuntime(3);  来抛出异常,throwChecked(3);就不能有异常
      

  2.   

    上面的 哪个方法 先 抛出了 exception  被你捕获了 刚上面说错了
      

  3.   


    +2  第一个异常就导致main 这个主线程停止了 肯定不会执行 下面的
      

  4.   


    那就是说,只要 try 块 ;里有一条出现了错误,try 外面没有 循环,这条语句就直接 不执行这条语句下面的语句了咯还是说 再 catch 里操作一下,还有进到try 里的可能?
      

  5.   

    throwChecked(3); 抛出Exception异常执行到
    catch(Exception e)
            {
                System.out.println(e.getMessage());
            }程序遇到异常,,然后打印出e.getMessage()以后就会终止。。try中以下的部分将不会再执行下去
      

  6.   

    catch表示捕获异常已经对异常进行处理了
    抛出异常表示 只是抛出而不处理。。那就还可以继续往下执行
      

  7.   

    public static void throwChecked(int a) throws Exception
        {
            if (a > 0)
            {
                throw new Exception("ta > 0 ,exception");
            }
        }
    你把这改成a<0.就会出现第二个异常了。。