首页 > 编程 > Java > 正文

java异常

2019-11-06 08:56:55
字体:
来源:转载
供稿:网友
1.RuntimeException并不是必须要throws或catch的,java Runtime会自动catch到程序throw的Exception,在后台打印出来。而一般情况下,API中写了throws的都不是RuntimeException,这些异常是必须要throws Exception的,而且所有调用此方法的方法如果都不写try...catch就要一直throws Exception,一直到main方法为止。如果不throws,就一定要try...catch...,如果一个应该抛出非RuntimeExcetion的方法既没有throws Exception也没有try...catch...,一定会报错的。另外异常处理的原则是尽可能早的catch异常,正常的程序不应该写throws Exception。

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锁进行获取。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表