JAVA提供了功能强大的异常处理机制, 可以方便地
在程序中监视可能发生异常的程序块
并将所有异常处理代码集中放置在程序的某处,使完成正常功能的程序代码与进行异常处理的程序代码分开..

 

JAVA将异常分为Exception(异常)和Error(错误)两大类。
Exception类解决由程序本身及环境所产生的异常,
Error类处理内部系统错误。
Exception类异常可以被捕获并进行处理,而对Error类异常,程序员通常无能为力,只能在其发生时由用户按照系统提示关闭程序..  

   

 

下面写一个BaseException 继续 Exception. 其他类都继承至 BaseException

package pack.java.exception.demo;
/**
 * BaseException Class;
 * Created on 2011-04-11 23:46:00;
 * @author Administrator;
 *
 */
public class BaseException extends Exception{
	
	private static final long serialVersionUID = 6827474686407781727L;

	public BaseException(){
		super();
	}
	
	public BaseException(String msg){
		super(msg);
	}
	
	public BaseException(String str,Throwable throwable){
		super(str, throwable);
	}
	
	public BaseException(Throwable throwable){
		super(throwable);
	}
}

 

 

   建立一个DataBaseExcepiton 继承至 BaseException;

package pack.java.exception.demo;
/**
 * 数据库操作异常;
 * DataBase operation Exception.
 * @author Administrator
 *
 */
public class DataBaseException extends BaseException{

	private static final long serialVersionUID = 3360193001189847980L;
	
	private static final String MSG = "Error in Database operation.";
	
	public DataBaseException(){
		super(MSG);
	}
	
	public DataBaseException(String msg){
		super(msg);
	}
	
	public DataBaseException(String msg,Throwable throwable){
		super(msg, throwable);
	}
	
	public DataBaseException(Throwable throwable){
		super(MSG,throwable);
	}
}

 

 

建立几个自定义Excepiton,进行测试.

package pack.java.exception.demo;

import java.util.ArrayList;
import java.util.List;

import pack.java.exception.model.User;

public class CustomException extends DataBaseException{
	
	private static final long serialVersionUID = 7264026880430549237L;

	public List<User> getUserList() throws DataBaseException{
		List<User> list = new ArrayList<User>();
		//故意抛出一个异常,作为测试!.
		if(list.size()<=0){
			throw new DataBaseException("list数组为空!");
		}
		return list;
	}
	
	public int division(int i ,int j)throws DataBaseException{
		if(j == 0){
			throw new DataBaseException("除数不能为0!");
		}
		return i/j;
	}
	
	public void getBaseExcepitonInfo()throws DataBaseException{
		throw new DataBaseException();
	}
}

 

 以下 建立一个测试类,进行测试自定义异常。

 

package pack.java.exception.test;

import java.util.List;
import pack.java.exception.demo.CustomException;
import pack.java.exception.demo.DataBaseException;
import pack.java.exception.model.User;

public class TestExceptionDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		CustomException customException = new CustomException();
		
		try {
			List<User> list = customException.getUserList();
			for(User user:list){
				System.out.println(user.getId()+","+user.getName()+","+user.getAge()+","+user.getAddress());
			}
		} catch (DataBaseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		try {
			int result = customException.division(5, 0);
			System.out.println(result);
		} catch (DataBaseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(ArithmeticException e1){
			e1.printStackTrace();
		}
		
		try {
			customException.getBaseExcepitonInfo();
		} catch (DataBaseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

运行结果如下:

pack.java.exception.demo.DataBaseException: list数组为空!
 at pack.java.exception.demo.CustomException.getUserList(CustomException.java:16)
 at pack.java.exception.test.TestExceptionDemo.main(TestExceptionDemo.java:19)
pack.java.exception.demo.DataBaseException: 除数不能为0!
 at pack.java.exception.demo.CustomException.division(CustomException.java:23)
 at pack.java.exception.test.TestExceptionDemo.main(TestExceptionDemo.java:29)
pack.java.exception.demo.DataBaseException: Error in Database operation.
 at pack.java.exception.demo.CustomException.getBaseExcepitonInfo(CustomException.java:29)
 at pack.java.exception.test.TestExceptionDemo.main(TestExceptionDemo.java:39)