2.throw单独存在时,下面不要定义语句,因为执行不到。
例:
class Demo{ public static void func(){ try{ throw new Exception(); System.out.PRintln("A"); } catch(Exception e){ System.out.println("B"); } } public static void main(String[] args){ try{ func(); } catch(Exception e){ System.out.println("C"); } System.out.println("D"); }}编译出错!3.如果try catch finally后边有return那么finally要执行一次,后边的语句直接不执行。class Test{ public static String output=""; public static void foo(int i){ try{ if(i==1){ throw new Exception();//throw后边一定不能加上语句,否则报错。 } output+="1"; } catch(Exception e){ output+="2"; return; } finally{ output+="3"; } output+="4"; } public static void main(String[] args){ foo(0); System.out.println(output); foo(1); System.out.println(output); }}4.run方法是不能抛出异常的,在run方法中产生的异常只能用 try catch进行捕获。原因如下:线程是独立执行的代码片断,线程的问题应该由线程自己来解决,而不要委托到外部。基于这样的设计理念,在Java中,线程方法的异常无论是checked还是uncheckedexception,都应该在线程代码边界之内(run方法内)进行try catch并处理掉。5.JDK1.5中提供了多线程升级解决方案。将同步Synchronized替换成现实Lock操作。将Object中的wait,notify,notifyAll,替换成condition对象 。该对象可以Lock锁进行获取。
新闻热点
疑难解答