JavaSE之常见异常介绍

/**异常:程序在运行过程中的特殊情况
* 1)受检异常:(要求程序必须捕获或者声明抛出异常。)
* 放在方法和参数的后面,用throws声明,
* 2)运行时异常:(默认情况下会得到自动处理,所以不用通常捕获。)
* 算术异常、类型转换异常、数组下标越界、空指针异常、输入不匹配异常
* 当语句可能存在异常时,try{异常语句} catch(){隔离异常}
* 多重catch:需要考虑异常的子父类关系 子类在上 父类在下
* 执行顺序:try语句块->相应的catch语句块-->finally语句块-->执行到最后
*/
  1 public class UnusualTest {
  2     private  static ThreadLocal<Connection> tl = new ThreadLocal<>();
  3     private  static DataSource dataSource;
  4     //连接数据库
  5     public  static Connection getConnection(){
  6         Connection conn = null;
  7         //当语句可能存在异常时,try{异常语句} catch(){隔离异常}
  8         try {
  9             conn = tl.get();
 10             if(conn==null){
 11                 conn = dataSource.getConnection();
 12                 tl.set(conn);
 13             }
 14         } catch (SQLException e) {
 15             e.printStackTrace();
 16         }
 17         return  conn;
 18     }
 19     //断开数据库
 20     public static void closeAll(AutoCloseable... cs){
 21         for(AutoCloseable c : cs){
 22             if(c!=null){
 23                 try {
 24                     c.close();
 25                 } catch (Exception e) {
 26                     e.printStackTrace();
 27                 }
 28             }
 29         }
 30     }
 31     //开启事务
 32     public static  void begin(){
 33         Connection conn = getConnection();
 34         try {
 35             conn.setAutoCommit(false);
 36         } catch (SQLException e) {
 37             e.printStackTrace();
 38         }
 39     }
 40     //提交事务
 41     public static void commit(){
 42         Connection conn = getConnection();
 43         try {
 44             conn.commit();
 45         } catch (SQLException e) {
 46             e.printStackTrace();
 47         }
 48         closeAll(conn);
 49         tl.remove();
 50     }
 51     //事务回滚
 52     public static  void rollback(){
 53         Connection conn = getConnection();
 54         try {
 55             conn.rollback();
 56         } catch (SQLException e) {
 57             e.printStackTrace();
 58         }
 59         closeAll(conn);
 60         tl.remove();
 61     }
 62 }
posted @ 2021-04-24 15:39  夜景&  阅读(103)  评论(0)    收藏  举报