最近为公司写一个工具类。考虑到程序的健壮性,我加入了异常处理。非常想听下大家的意见。因为我感觉自己对JAVA的异常处理理解的还不是那么精通。在这里,很想跟大家一起学习学习。我是这么实现的.. 1、我有一个异常基类叫CompanyException,它继承了RuntimeException。因为我考虑到将来要将公司所有的系统加入异常处理,所以定义了一个基类。
 
 2、定义了一个专门处理工具类里发生的异常,叫CompanyToolsException,继承了CompanyException。所有公司写的工具类中的异常均转移成CompanyToolsException进行管理与输出。例如:
/**
 * <p>计算给定时间至今的天数。</p>
 * @param Date date
 * @return long days(天数),永远返回的是绝对值
 *
 * @created 2013-5-09 下午04:21:10
 * @version 1.0
 */
public static long date2Day(Date date) {
if (date == null) {
throw new CompanyToolsException("date", new NullPointerException());
}
calendar.setTime(date);
int day1 = calendar.get(Calendar.DAY_OF_YEAR);
calendar.setTime(new Date());
int day2 = calendar.get(Calendar.DAY_OF_YEAR);
// 不管day1或day2谁大谁小,均永远返回的是绝对值
return Math.abs(day2 - day1);
}以上代码为工具类中的代码,当参数为空时我抛出HanyaToolsException异常,把为空的原因写上“Date”。在新new一个NullPointerException异常对象,然后传过去,这样的话如果用户调用这个方法传了一个null,那么它将报错并提示。如下:
Exception in thread "main" com.hanyastar.exception.HanyaToolsException: date
at com.hanyastar.util.date.DateUtils.date2Day(DateUtils.java:41)
at com.hanyastar.util.date.DateUtils.main(DateUtils.java:340)
Caused by: java.lang.NullPointerException
... 2 more这样处理可以吗?
  
 3、定义了一个与持久层的异常,专门用来处理DAO层的异常。叫CompanyDaoException,也继承了CompanyException。所有持久层的异常均通过此异常管理。例如如果发生SQLException时,我将它转译成CompanyException。这样我很快就知道是哪里出的问题也好管理异常,也能在前台进行友好处理。4、可能我还会定义其他异常,均继承CompanyException。以上异常处理合适吗?有更好的处理方式吗?Java异常处理异常