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)