一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

java中异常处理try~catch~finally介绍

时间:2012-07-20 编辑:简简单单 来源:一聚教程网

1.异常:
1.1:错误和异常是两个概念:错误是需要避免的,而异常是你能预见到的并且能掌控的了

1.2:处理异常:用try。。。catch。。。finally
用throw,就得用throws来修饰方法名
public void sayHello() throws Exception{}这样写,如果在别的方法
中想要调用这个方法,要么用try。。catch捕获异常,要么throws
Exception交给下一个用它的方法。
1.3:try{如果这里面的语句出现错误,那么将不执行下一句,直接跳转到catch语句当中}
1.4:finally当中的语句不管怎样都会执行。就算try中和catch用return返回了,那
finally也会照样执行。
1.5:throw和throws的区别:throw:抛出异常对象。throws:修饰方法的声明。
1.6: 一个try可以跟多个catch,因为try里面的代码可能会出现许多的错误,错误的种类
或者类型是不相同的,所以可以跟多个,但是找到对应的,下面的catch就不会执行
了,就会跳出try。。catch。
1.7: 异常一般分为两大类:检查的:Exception和不检查的或者叫运行时的:
RuntimeException,这个可以不去管。
1.8: 自定义异常类:继承自Exception得类就叫做自定义异常类。

 代码如下 复制代码
public class myException extends Exception{
public void printstrackance(){
}
}


1.9:
三种方法处理异常:系统自动处理,使用try~catch~finally语句,throw语句直接抛
出异常或使用throws语句间接抛出异常

5、示例

下面是示例:TestServlet 调用TestDB和TestPsi,(附代码)如果发生异常怎样最快解决程序发生的异常错误。

在整个项目的开发过程中,指定错误代码表,并分类。如PSI类,数据库异常类代码,应用异常类代码,XML异常,网络通讯异常等等;

采用自己的异常类,当遇到异常是,激发的异常携带错误类或异常方法的路径:

如:setFlag(“PSI001”);

 代码如下 复制代码

throw new WhcaException(“JB:TestA M:exe1 ”+e.getMessage);

这里:PSI001为错误代码,“JB:TestA M:exe1”为异常链,e.getMessage为异常信息。

例如:遇到错误信息列表为:JB:TestB M:exe2 JB:TestA M:exe1 java.sql.SQLException,说明TestB 的方法exe2调用TestA的方法exe1发生了操作数据库异常。则可以迅速,准确的定位到那个类那个方法发生了异常。

 注:(简写)JB:JavaBean M:Method

访问数据库类

 代码如下 复制代码

//Class: TestDB

package corbaidl;

/**

 * Title:

 * Description:

 * Copyright:    Copyright (c) 2000

 * Company:

 * @author

 * @version 1.0

 */

import java.io.*;

import java.sql.*;

import whca.common.WhcaException;

public class TestDB {

  private PreparedStatement pstmt =null;

  private Connection conn = null;

  private String flag;

  public TestDB() {

  }

  public void CreateSysMan() throws WhcaException{

    try {

      /**@todo: CreateSysMan method*/

    }

    catch (Exception ex) {

      setFlag("ORA004");

      throw new WhcaException("JB:TestDB M:CreateSysMan ERR="+ex.getMessage());

    }

    finally {

      cleanUpAll();

    }

  }

  public void PublishCert() throws WhcaException{

    try {

      /**@todo: PublishCert method*/

    }

    catch (Exception ex) {

      setFlag("ORA005");

      throw new WhcaException("JB:TestDB M:PublishCert ERR="+ex.getMessage());

    }

    finally {

      cleanUpAll();

    }

  }

  public void cleanUpAll() throws WhcaException {

      try {

          if (pstmt != null)

              pstmt.close();

          if (conn != null)

              conn.close();

      } catch (Exception e) {

          throw new WhcaException("JB:RootCaDB M:cleanUpAll Exception" + e.getMessage());

      }

  }

  public void setFlag(String flag) {

    this.flag = flag;

  }

  public String getFlag() {

    return flag;

  }

}

Psi调用公共类
//Class: TestPsi

package corbaidl;

 

/**

 * Title:

 * Description:

 * Copyright:    Copyright (c) 2000

 * Company:

 * @author

 * @version 1.0

 */

import psi.*;

import whca.common.WhcaException;

public class TestPsi {

  private PSIJni psijni;

  private String flag;

  private int exeHandle=0;

  public TestPsi() {

  }

  public int exePsiInit() throws WhcaException {

          try {

                  //Step 1:psijni init

                  int ret;

                  int handle;

                  psijni = new PSIJni();

                  ret = psijni.pkiInit();

                  if (ret != 0) {

                          setFlag("PSI001");

                          throw new WhcaException("Initialize library environment failed!");

                  }

 

                  //Step 2:psijni getHandle

                  handle = psijni.getHandle();

                  if (handle < 0) {

                          setFlag("PSI002");

                          throw new WhcaException("Get handle error");

                  }

                  return handle;

          } catch (Exception ex) {

                  throw new WhcaException(ex.getMessage());

          }

  }

  public void exePsiEnd(int handle) throws WhcaException {

          try {

                  psijni.destroyHandle(handle);

                  psijni.pkiEnd();

          } catch (Exception ex) {

            throw new WhcaException(ex.getMessage());

          }

 

  }

热门栏目