1.error:严重的错误,例如,内存溢出,AWT错误。exception:异常。轻微的错误。
2.类Exception派生自java.lang.throwable。
3.异常处理:try...catch语句。
class exception{
int division(int a,int b){
return a/b;
}
}
class exceptest{
public static void main(String[] args){
exception exp=new exception();
try{ //try里面放的都是可能异常的句子
exp.division(5,0);
System.out.println("except"); //这句不会被执行,因为上面这句出异常之后,会产生异常对象以及一些异常信息,然后跳到catch,将这些异常信息交到参数i处理。
}
catch(Exception i){ //这里的Exception是固定的类用法,注意大写。i是传递的一个参数,跟函数里的一样。
System.out.println(i.getMessage()); //这里就是通过java.lang.throwable下的方法getMessage()来获取这样一个异常的信息
System.out.println(i.toString()); //同上,只不过toString()方法打印出的是简短的异常信息
e.printStackTrace(); //这句是直接在屏幕上打出出错的位置。由于printStackTrace()返回的是void类型,本身就有打印到屏幕的功能,所以不用System.out.println
}
System.out.println("finish"); //try..catch处理完了,会跳到这里执行,如果没有try..catch,就不会执行这一句,而是直接中断。
}
}
3.class exception{ //异常处理也可以写在开始的地方。
int division(int a,int b){
try{
return a/b;
}
catch(Exception i){
System.out.println(i.toString());
return 0; //因为上面的return是先执行a/b的,再执行return,所以,还没等到return就出错交到catch了,所以就没有返回值了。所以在这里要增加一个return 0;来返回值。
} //retuen 0没有特别的意思,只是代表程序成功执行结束。本质上跟return 100什么的没有区别。
(return 0;)//写这里也可以的。
}
}
4.throw 与 throws的区别与联系(转自:coollinux——酷linux博客)
区别一:throw 是语句抛出一个异常;throws 是方法抛出一个异常;
throw语法:throw <异常对象>
在方法声明中,添加throws子句表示该方法将抛出异常。
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。
例如:public String getXXXX() throws Exception,IOException
这段代码说明 getxxxx 方法可能会抛出Exception或IOException两种类型的错误。
区别二:throws可以单独使用,但throw不能;
区别三:throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获。
大家也许在编程的过程中,会意识到这里出错,但不知道会抛出什么异常,也是一件头疼的事,现将这部分总结如下:
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
5.catch可以有多个。throws也可以抛出多个。有throws就可以不捕获,由java系统来解决。因此,调试的时候经常用到throws
6.通常runtimeexception,不需要我们去捕获,java系统会自动抛出并处理。
7.finally:写在try..catch后面,无论是否有异常,都执行finally里的语句。通常在软件运行出现异常的时候,为了释放资源的时候用。但在重大错误的时候,我们为了退出,就用到System.exit(-1);语句,无条件退出,这时候,finally也不会执行。
8.我们也可以自己定义异常类的派生类。
class d extends Exception{
}