1、Java异常处理机制总结
(1)对捕获到的异常对象进行常见方法操作:String getMessage():获取异常信息。
(2)对多异常的处理:
A) 声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
B) 声明几个异常,就对应有几个catch 块。不要定义多余的 catch 块。如果多个catch 块中的异常出现继承关系,父类异常 catch 块放在最下面。
(3)Exceptoin 中有一个特殊的子类异常 RuntimeException 运行时异常。如果在函数内容上抛出该异常,函数上可以不用声明,编译通过。如果在函数上声明了该异常,调用者可以不用进行处理,编译通过。
(4)自定义异常时:如果该异常的发生,无法在继续进行运算,就让自定义异常继承 RuntimeException。2、Java异常处理方式
一种是捕获异常,自己处理;一种是抛出异常,让别人处理。
public class A{
try{
// 异常语句...
}
} catch(Exception e){
e.getMessage();//自己处理
}
/****************************************************/
public class A throws Exception{
// 异常语句...
} // throw 出去,让他人处理
/****************************************************/
public class A{
try{
// 异常语句...
} catch(Exception e){
e.getMessage();//自己处理
throw new Exception ("");
}
}
3、final、finally、finalize有什么区别?
(1)final — 修饰符(关键字),如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为 final 的。将变量或方法声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final 的方法也同样只能使用,不能重载。
(2)finally — 在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块。
(3)finalize — 方法名,Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
4、try - catch - finally执行顺序public class Test {
public static void main(String[] args) {
System.out .println(test ());
}
public static String test() {
try {
System.out .println("try block");
return test1 ();
}
finally {
System.out .println("finally block");
//return "finally";
}
}
public static String test1() {
System.out .println("return statement");
return "after return";
}
}
分析:
(1)try 语句块,return test1(),则调用 test1 方法。
(2)test1()执行后返回"after return",返回值"afterreturn"保存在一个临时区域里。
(3)执行 finally 语句块。若 finally 语句有返回值,则此返回值将替换掉临时区域的返回值。
(4)将临时区域的返回值送到上一级方法中。
5、Error和Exception的区别Exception:可以是可被控制(checked)或不可控制的(unchecked),表示一个由程序员导致的错误,应该在应用程序级被处理。
Error:总是不可控制的(unchecked),经常用来用于表示系统错误或低层资源的错误,如果可能的话,应该在系统级被捕捉。