所有的异常都是从”Throwable"类继承,有一部分是“错误”,另一部分是常说的异常,分类很多,RuntimeException 是其中很常见的一种,很多异常都属于它。发生错误只能中断程序。
异常处理最简单的是声明异常类,在方法头部使用”throws Exception",比如 public static void main throws Exception(String[] args) {};还有一种使用“throw” 在方法体内将异常不断抛给异常处理器。
public static void main throws Exception(String[] args)
{执行代码
throw exception
执行代码}
2.好的编程习惯是不要只将异常抛给异常处理器 ,还需要捕获处理异常
简单处理比如打印异常信息try{程序代码 }catch(Exception e){ e.printStackTrace( ) }
完整的异常处理如下
try{
程序代码
}catch(Exception1(异常类型1) e1(异常的变量名1){
处理程序代码//比如上面简单地打印异常信息 e1.printStackTrace( ) ;
//
}catch(Exception2 e2){
处理程序代码
.......
}finally{
程序代码3//无论发生异常,都会执行的
}
多个异常可用多个catch语句捕获,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。catch中的exception是
Java语言中定义的或者可以自己定义的。finally代码块是无论发生异常,都会执行的,比如将jdbc中数据源关闭程序放在其中,保证数据源关闭。
至于你的new RuntimeException ,是运行时异常,编译时候无法发现只有在运行时才会出现的异常。如果你的代码本身存在BUG,不是try-catch能解决的,最好要修正代码。try-catch 只是不会直接在界面产生令人恐慌的错误,因为catch后已经给出产生错误后要输出的结果,但是bug依旧存在。常见的RuntimeException比如 有ArithmeticException、IndexOuterOfBoundsException,出现后要检查修正 代码。
偷懒简单处理如下
try{
程序代码
}catch(RuntimeException E{
throw E//1-只是简单地抛出异常,你可以自己编写处理代码
或者// 2- E.printStackTrace( ) ( 常见的) ;
或者3-(以及其它处理方法)。
}关键要修正bug。
总之异常处理的目的是提高程序的健壮性 Java异常处理是Java语言的一大特色,也是个难点,掌握异常处理可以让写的代码更健壮和易于维护。自己要学会 异常处理 ,不要只是“throws Exception" ,要对编写的程序负责,异常处理 慢慢学,多上网查查,看看源代码,以后学习经常见的,用的多了就熟悉了。
|