java16

本文介绍了一种统一处理Java程序中异常的方法,并通过数据库获取异常提示信息,同时展示了一个执行SQL语句并处理异常的实用类。文章深入探讨了如何自定义异常处理逻辑以及如何在遇到SQL执行失败时进行回滚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.

import java.sql.*;
import java.util.*;

public class UnifiedException
{    
	 private HashMap ht;
	 public UnifiedException(){
		 ht = new HashMap();
		 extractDataFromDatabase();
		 //ht.put("/ by zero","发生了除数为零异常");
		 //ht.put(null,"发生了空指针异常");
	 }
	 public void extractDataFromDatabase(){
		  String url   = "jdbc:odbc:myDSN";
		  String query = "SELECT name,note FROM dictionary"; 
		  Connection con=null;
		  Statement stmt=null;
		  ResultSet rs=null;
		  try {			
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");			
			con = DriverManager.getConnection (url, "sa", "");			
			stmt = con.createStatement ();
			rs = stmt.executeQuery (query);			
			//从数据库中提取相应的异常提示信息
			while (rs.next()) {	
				  String tem = rs.getString(1);				  
				  if(tem.equals("null")){
					  ht.put(null,rs.getString(2));	
				  }
				  else{
					  ht.put(tem,rs.getString(2));	
				  }				  
			}				
		   }
		   catch (SQLException ex) {System.out.println ("发生SQL异常");	}
		   catch (Exception ex) {ex.printStackTrace ();}
		   finally{
			 try{
				 if (rs!=null) rs.close();
				 if (stmt!=null) stmt.close();
				 if (con!=null) con.close();
				}
			 catch (SQLException ex) {}
		   }
	 }
	 public void dealException(Exception e){		 
		String str = e.getMessage();
		System.out.println((String)ht.get(str));
	 }    	 
     public static void main(String[] args)
	{
	    int a,b,c;
	    try{
			a=67; b=0;
			//c=a/b;		
			throw new NullPointerException();
	     }
	     catch(Exception e){	      
		  new UnifiedException().dealException(e);
	     }
	}   
}

6.

public class ExeSql{
	 public  boolean execSql(String sqlStr){
		 String[] sql=new String[1];
		 sql[0] =sqlStr;
		 return execSql(sql);
	 }
	 public  boolean execSql(String[] sql){
		 if (sql == null)
		 {
			 return false;
		 }
		 else if (sql.length == 0)
		 {
			 return false;
		 }	 
		 Connection con =null;
		 Statement state=null ;
		 int i=0;
		 try{		
			con =  getConnection();
		    state =con.createStatement();;
			con.setAutoCommit(false);
			for(i = 0 ;i<sql.length;i++){			
				state.executeUpdate(sql[i]);
			}
			con.commit();
			con.close();
			con = null;
			return true;
		 }
		 catch(Exception e){
			 try{
				con.rollback();
				if (i<sql.length)
				 {
					 System.out.println("-------------------");
					 System.out.println("出现错误:"+sql[i]);
					 System.out.println("-------------------");
					 e.printStackTrace();
				 }
			 }
			 catch(SQLException ee){
			 }
			 return false;
		 }
		 finally{
				try{			
					state.close();
					con.close();					
				}
				catch(Exception e){
				}
		 }
		
	 }
	 private Connection getConnection() {
	   //得到同数据库相连接的各种方法
	 }
 }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值