对于java初学者学会管理自己代码中的异常情况出现很重要,所以今天就讲讲异常处理。对于异常,大家会想到try,catch,finally,throw,throws这些关键字。
1,定义
※异常:异常阻止当前方法或作用域继续执行的问题。
※throw:就是自己进行异常处理,throw一旦进入被执行,程序立即会转入异常处理阶段,后面的语句就不再执行, 而且所在的方法不再返回有意义的值!
※throws:用来声明一个方法可能抛出的所有异常信息,将异常声明但是不处理,而是将异常往上传,谁调用我就 交给谁处理。
※try:出现在方法体中,它自身是一个代码块,表示尝试执行代码块的语句。如果在执行过程中有某条语句抛出异 常,那么代码块后面的语句将不被执行。
※catch:出现在try代码块的后面,自身也是一个代码块,用于捕获异常try代码块中可能抛出的异常。catch关键字 后面紧接着它能捕获的异常类型,所有异常类型的子类异常也能被捕获。
※finally:表示不管异常是否发生,都得进行此方法体中处理,关闭输入流输出流。
2,throw 与 throws
☆throws出现在方法函数头,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型;而throw出现在 函数体,当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。。
☆throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出 了某种异常对象。
3,try,catch,finally用法
try{
……
}catch(Exception e){
……
}finally{
……
}
try{……}中放置可能会发生异常的的语句块,如可能出现异常的函数,也可以是一般的程序语句;catch(){……}用于抓住异常,(Exception e)中Exception是异常的类型,必须是Exception(Exception是所有异常类的父类)的子类。{}定义当出现异常时的处理方法。finally{……}表示不管异常是否发生,都得进行finally{}中的处理。
在捕捉异常的try{...}语句块中,如果出现了异常,则该语句(出现异常的语句)后的程序语句都不执行,而是跳到catch{...}语句块中执行异常的处理。如:
public static void function1() throws NumberFormatException{
System.out.println(Double.parseDouble("abc"));
}
public static void main(String[] args) {
try {
function1();
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
4,常见异常
注意:抛异常的时候先抛Exception父类的子类,然后再抛exception。