try{ ...假设发生 XXXException , XXX1Exception ... return }catch(XXXException e){//有针对性的处理 .... }catch(XXX1Exception e){ .... }catch(Exception e){ //发生未知异常。建议把程序停止(使问题无法被隐藏) ...把异常信息打印到错误日志... exit(0); }finally{ //即使发生异常,finally仍然要执行 } *try-return-catch-finally finally永远在return之前执行 2.抛出异常: //声明我定义的功能函数存在一定条件下的异常,调用本函数必须进行异常处理 int div( int a , int b ) throws ArithmeticException, FushuException { //声明调用本函数可能会产生ArithmeticException, FushuException个异常 if( b < 0 ) throw new FushuException(); return a / b ; } 3.自定义异常 class FushuException extends Exception{//继承父类Exception类 }
package java异常; public class 功能方法采用抛出异常 { <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>public static void main(String [] args){ <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>Demo d = new Demo(); <span style="white-space:pre"> </span>try{ <span style="white-space:pre"> </span>d.div(4, -1); <span style="white-space:pre"> </span>}catch(ArithmeticException e){//对本异常进行匹配 <span style="white-space:pre"> </span>System.out.println("除零了"); <span style="white-space:pre"> </span>}catch(FushuException e1){ <span style="white-space:pre"> </span>e1.printStackTrace(); <span style="white-space:pre"> </span>}catch(Exception e2){//在出现异常的情况下,若上面两个catch未匹配成功,那么必定在本条语句捕获 <span style="white-space:pre"> </span>System.out.println("未知异常"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>System.out.println("over"); <span style="white-space:pre"> </span>}<span style="white-space:pre"> </span> } /** * 注意在,编写功能型函数时采用的是抛出异常的处理方式(声明函数内可能发生的异常),而 * @author Administrator *throw和throws的区别: *throw用在函数内(后面紧跟异常对象),throws用在函数上(声明) */ class Demo{ <span style="white-space:pre"> </span>//声明我定义的功能函数存在一定条件下的异常,调用本函数必须进行异常处理 <span style="white-space:pre"> </span>int div( int a , int b ) throws ArithmeticException, FushuException {//声明本函数可能会产生2个异常 <span style="white-space:pre"> </span>//if( b < 0 ) <span style="white-space:pre"> </span>//<span style="white-space:pre"> </span>throw new FushuException("出现了除零异常");//父类不在对其进行异常处理 <span style="white-space:pre"> </span>/* <span style="white-space:pre"> </span> * 注意:throw new FushuException("");就不进行异常声明,若进行了异常声明就不进行抛出异常, <span style="white-space:pre"> </span> * 抛出异常会把异常隐藏在本方法内,而声明异常则把问题交给类调用者 <span style="white-space:pre"> </span> * 需要封装的功能:采用throw的方法 <span style="white-space:pre"> </span> */ <span style="white-space:pre"> </span>return a / b ; <span style="white-space:pre"> </span>} } /** * 自定义异常: * * 因为在项目中会出现一些特有的问题,而这些问题并未被java描述而封装对象, * 而这些问题我们可以采用java的对问题进行封装的思想,将特有的问题,进行 * 自定义的异常封装 * * 需求描述:假设在本程序中,除数为负数也是无法进行运算的,那么就得对这个问题进行 * 自定义的描述 */ class FushuException extends RuntimeException{//若该异常的发生无法再进行运算就继承RuntimeException <span style="white-space:pre"> </span>//继承父类Exception类,只有继承了Exception的类才能进行抛出处理 <span style="white-space:pre"> </span>FushuException(String msg){//因为父类把异常信息都定义完成了,子类只需要把构造信息完成就行了 <span style="white-space:pre"> </span>super(msg); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>FushuException(){} }
原文:http://blog.csdn.net/u010218226/article/details/44564735