1.异常的基本概念
为了保证程序出现非致命错误后,程序依然可以正常运行,所以需要异常处理机制。
Java的异常处理机制的优点:易于使用、可自行定义异常类、处理抛出的异常同时又不会降低程序运行速度。
2.关于除数不能为零的说明
在计算机的发展中有两大“杀手”。一是断电,一是除数为零。因为除数为零在数学上解是无穷大,对于计算机来说,如果是无穷大,意味着内存将全部被占满。
3.异常信息的输出方式:
A)System.out.println(e)
B)e.printStackTrace() 获取完整异常信息
4.异常处理可以使用try...catch处理,也可以用try...catch...finally。在try语句中捕捉异常,在catch中处理异常,finally作为异常的统一出口,不管是否发生异常都要执行此段代码。
5.异常的最大父类是Throwable,其分为Exception和Error两个子类,Exception表示程序处理的异常,Error表示JVM错误,一般不是由程序开发人员处理。
一般开发中是不会直接使用Throwable进行捕获的,另外,对于一个程序,多个异常最好分别捕获,不要直接使用Exception捕获全部异常。
发生异常之后,JVM会产生一个异常类的实例化对象,并匹配相应的catch语句中的异常类型,也可以利用对象的向上转型关系,直接补获Exception。
6.throws用在方法声明处,表示本方法不处理异常,而交给方法的调用处进行处理。
throw表示在方法中手工抛出一个异常。是在代码块中使用的。
public class Point {
public static int div(int i,int j)throws Exception{
int temp=0;
System.out.println("start");
try{
temp=i/j;
}catch (Exception e){
throw e;
}finally {
System.out.println("end");
}
return temp;
}
}
public class Test {
public static void main(String args[]) {
try{
System.out.println(Point.div(10,0));
}
catch(Exception e){
System.out.println("异常产生"+e);
}
}
}
可以简化处理,省掉catch和throw的操作
//在实际的开发中,这种异常的处理格式是最为重要的,尤其是当与一些资源进行访问操作的时候
public class Point {
public static int div(int i,int j)throws Exception{
int temp=0;
System.out.println("start");
try{
temp=i/j;
}finally {
System.out.println("end");
}
return temp;
}
}
只要方法后面带有throws往往都是告诉用户本方法可能产生的异常是什么。
7.自定义异常类时,只需继承Exception类即可。
8.断言是JDK1.4之后提出的新功能,可用来检测程序执行结果,但开发中不建议使用断言进行检测。虽然断言返回的是boolean值,但其不能作为条件判断语句出现。
9.解释区别:RuntimeException,Exception
1)RuntimeException是Exception的子类;
2)Exception定义了必须处理的异常,RuntimeException定义的异常可以选择性的进行处理;
3)常见的RuntimeException:NumberFormatException,ClassCastException,NullPointerException,
ArithmeticException,ArrayIndexOutOfBoundsException