`
xurichusheng
  • 浏览: 346189 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

自定义异常

    博客分类:
  • java
阅读更多

 

1、异常工具类

    

public abstract class JDBCExceptionUtils {

	public JDBCExceptionUtils() {
	}

	public static String buildMessage(String message, Throwable cause) {

		if (null != cause) {

			StringBuffer buf = new StringBuffer();

			if (null != message && !"".equals(message)) {
				
				buf.append(message).append("; ");
			}
			
			buf.append("jdbc exception is ").append(cause);

			return buf.toString();

		} else {
			return message;
		}
	}
}

 

2、异常类

  

public class JDBCException extends Exception {

	/**
	 * @Fields serialVersionUID : TODO
	 */
	private static final long serialVersionUID = 4520101166979175689L;

	public JDBCException(String msg) {
		super(msg);
	}

	public JDBCException(String msg, Throwable cause) {
		super(msg, cause);
	}

	public String getMessage() {
		return JDBCExceptionUtils.buildMessage(super.getMessage(), getCause());
	}

	public Throwable getRootCause() {

		Throwable rootCause = null;

		for (Throwable cause = getCause(); cause != null && cause != rootCause; 
				cause = cause.getCause()) {
			rootCause = cause;
		}

		return rootCause;
	}
	
	public Throwable getMostSpecificCause()
    {
        Throwable rootCause = getRootCause();
        return ((Throwable) (rootCause == null ? this : rootCause));
    }

    @SuppressWarnings("rawtypes")
	public boolean contains(Class exType)
    {
        if(exType == null)
            return false;
        if(exType.isInstance(this))
            return true;
        Throwable cause = getCause();
        if(cause == this)
            return false;
        if(cause instanceof JDBCException)
            return ((JDBCException)cause).contains(exType);
        do
        {
            if(cause == null)
                break;
            if(exType.isInstance(cause))
                return true;
            if(cause.getCause() == cause)
                break;
            cause = cause.getCause();
        } while(true);
        return false;
    }
}

 

3、使用自定义异常

    

    

/**
	 * @Title: getConnection
	 * @Description: 取得与数据库的连接
	 * @return
	 * @author 
	 */
	public Connection getConnection() throws JDBCException {

		// 数据库连接
		Connection conn = null;

		try {
			// 取得与数据库的连接
			conn = DriverManager.getConnection(url, userName, password);

			if (null != conn) {
				// 设置事务隔离级别
				conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
			}
		} catch (SQLException e) {
			throw new JDBCException("Get database connection failure.", e);
		} catch (Exception e) {
			throw new JDBCException("others exception.",e);
		}

		return conn;
	}

	/**
	 * @Title: closeConnection
	 * @Description: 关闭数据库连接
	 * @author 
	 */
	public void closeConnection() throws JDBCException {
		// 取得与数据库的连接
		Connection conn = getConnection();

		if (null != conn) {
			try {
				// 关闭连接
				conn.close();
			} catch (SQLException e) {
				throw new JDBCException("close database connection failure.",e);
			} catch (Exception e) {
				throw new JDBCException("others exception.",e);
			}
		}
	}

 

 

 

4、测试

    

     

public static void main(String[] args) {

		

		try {
			Connection conn = JDBCTools.getInstance().getConnection();
			
			boolean bool = false;

			if (null != conn) {
				bool = conn.isClosed();
			} else {
				bool = true;
			}

			if (!bool) {
				System.out.println("connect successfully");
			} else {
				System.out.println("connect failure");
			}
			JDBCTools.getInstance().closeConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (JDBCException e){
			System.out.println(e);
		}
	}

  

 

5、测试结果

    

com.java.common.exception.JDBCException: Get database connection failure.; jdbc exception is java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:orcl

 

 

 

分享到:
评论

相关推荐

    dubbo捕获自定义异常_dubbo异常捕获_dubbo异常_自定义异常_捕捉异常_

    Dubbo 提供了强大的异常处理机制,使得服务提供者能够向消费者传递自定义异常,从而帮助消费者更好地理解和处理服务调用中的错误情况。本文将深入探讨如何在 Dubbo 中捕获自定义异常,以及相关的最佳实践。 1. **...

    java 自定义异常实例二

    自定义异常是Java异常处理的一部分,允许我们创建符合特定业务需求的异常类。下面我们将深入探讨Java自定义异常及其应用。 首先,自定义异常通常是通过扩展Java内置的`Exception`类或其子类来实现的。`Exception`类...

    c# 自定义异常 Exception

    这时,我们就需要创建自定义异常来细化错误信息,以便更精确地表达和处理问题。本篇将深入探讨如何在C#中自定义异常以及其应用。 首先,自定义异常通常是通过继承`System.Exception`类或其派生类来实现的。`...

    java 自定义异常实例一

    自定义异常是Java提供的一种机制,允许开发者创建特定于应用程序的异常类,以更精确地控制错误处理流程。本实例将深入探讨如何在Java中自定义异常。 首先,自定义异常通常继承自Java内置的`Exception`类或其子类,...

    Java自定义异常源代码

    自定义异常是Java中的一种高级技巧,允许开发者创建符合特定应用需求的异常类。下面将详细解释如何在Java中自定义异常,并通过源代码实例进行说明。 一、自定义异常的必要性 在标准库中,Java已经提供了一套丰富的...

    异常类:自定义异常类

    ### 异常类:自定义异常类 #### 知识点概述 在程序设计中,异常处理是一项重要的机制,用于管理程序运行时可能发生的错误或意外情况。Java 提供了一套完整的异常处理机制,其中包括标准异常类以及允许开发人员...

    实际项目中java自定义异常

    在实际的Java开发项目中,自定义异常是提高代码可读性和可维护性的重要手段。异常处理是程序设计的关键部分,它有助于捕获并处理在程序执行过程中可能出现的错误或异常情况。Java提供了丰富的异常处理机制,包括预...

    Oracle存储过程中自定义异常

    ORACLE 用户自定义异常小例子  1.进入pl/sql测试窗口  2.执行语句  declare  empname varchar2(255);  customize_exp EXCEPTION; –自定义异常  begin  FOR c IN (select d.* from scott.dept d) ...

    自定义异常类步骤

    本文将基于给定的文件信息,深入解析“自定义异常类步骤”这一主题,涵盖异常处理的基本概念、自定义异常类的设计与实现,以及如何在实际代码中应用这些自定义异常。 ### 异常处理概述 异常处理是一种编程机制,...

    Java自定义异常处理

    Java自定义异常处理详细介绍,包括了很多比较经典的案例,可以自己研究自定义异常

    Java自定义异常类_1.txt

    ### Java自定义异常类详解 #### 一、Java异常体系概览 在Java语言中,异常处理机制是一种用于处理程序运行时错误的重要机制。Java中的异常处理基于`java.lang.Throwable`类,它有两个重要的子类:`Exception`和`...

    Android代码-安卓APP自定义异常处理器

    安卓APP自定义异常处理器,Release状态下意外奔溃提示更加友好(代替系统默认的那个讨厌的对话框),不影响Debug模式下LogCat的打印。 ************************************************************************ ...

    学习java的自定义异常演示代码

    自定义异常是Java异常处理的一部分,它允许我们根据特定的业务需求创建自己的异常类。下面将详细介绍如何在Java中定义和使用自定义异常。 首先,让我们了解Java异常的基本概念。Java中的异常是一种事件,它在程序...

    Java SE程序 自定义异常类

    Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE...

    JAVA自定义异常类

    ### JAVA自定义异常类 #### 一、基本概念与应用场景 在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的各种错误情况。Java提供了丰富的内置异常类,但有时候,内置的异常类可能不足以精确地...

    Spring中切面捕获自定义异常

    Spring中,使用切面全局捕获异常的同时,进行自定义异常抛出捕获,方便代码书写。

    自定义异常和log4j的使用

    本文将详细讲解如何实现自定义异常以及如何有效地利用Log4j进行日志管理。 首先,让我们来了解自定义异常。在Java中,当我们遇到特定的业务逻辑错误或需要更精确地捕获和处理错误时,我们可以创建自定义异常。...

    oracle自定义异常

    ### Oracle自定义异常知识点 #### 一、Oracle异常处理机制简介 在Oracle PL/SQL编程中,异常处理是一项非常重要的功能。它可以帮助开发者捕获并处理程序运行时可能发生的错误情况,确保应用程序能够稳定可靠地运行...

    实现一个自定义异常类IntegerException

    在深入探讨如何实现一个自定义异常类`IntegerException`之前,我们先理解一下在Java编程语言中异常处理的重要性。异常处理是程序设计中一个至关重要的部分,它允许程序员捕获和响应程序运行时可能发生的错误情况,...

Global site tag (gtag.js) - Google Analytics