由于程序运行出现不正常现象,即产生异常;在java中,异常也是对象,是由异常类生成的。异常也分为编译异常与运行异常。异常和错误是属于两个不同的类,他们的体系结构大致如下:
当程序出现Error类的问题时,程序会终止运行,且也没有其它解决方法,但如果是Exception类下的错误,我们则可以使用try……catch……等方法进行异常捕捉,进行异常处理。
编译异常:由于程序在编译阶段,对语法进行检查时的报错,由于编译并不会运行代码,我们只能使用throws,进行声明此处可能会抛出的异常,使得程序编译成功,但是这并不表示该异常便不需要处理,这是向上抛出异常,如果 throws 出现在普通方法中,我们则需要在该方法的调用者处进行捕捉异常或者继续向上抛出异常,但输入是在主方法中,则会交由虚拟机处理。
public static void main(String[] args) throws Exception
运行异常:程序编译成功后,进行运行时报错,如果不处理,则会导致程序无法继续正常运行,此时则可以使用 try catch 进行捕获异常,当然也可以使用 throws 进行向上抛出异常。
自定义异常:我们也可自定义一些异常,以方便我们日常维护与检查,此时的话,我们就需要在特定情况下使用 throw 进行抛出异常,并处理它,当然如果我们有其它特别需要,也可以抛出其它异常。
public class myException extends RuntimeException{
public myException(){
exception();
}
private void exception(){
System.out.println("kbfjasgba");
}
}
public class main {
public static void main(String[] args) {
try{
throw new myException();
}catch (myException e){
}
}
}
final关键字:无论代码是否有异常都会运行的代码。但是前提是 final 语句中没有异常,或在 final 之前已经退出虚拟机,或者异常导致线程中断等。