Java的异常与错误

                                                                               Java的异常与错误

异常和错误的继承结构:

Java.Lang.Throwable
               Error(错误)
                                OutMemoryError
              Exception(异常)
                                RuntimeException(运行时异常或叫系统异常,不可检测)
                                                              ArithmeticException
                                                              ArrayIndexOutOfBoundsException
                                                              NullPointException
                                                              InputMismatchException

        
                               CheckException(普通异常可检测)
                                                          IOException    
                                                          SQLException

 

 

exception: 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况

           1.他分为可被控制(checked) 或不可控制的(unchecked);

           2.表示一个由程序员导致的错误

           3.应该在应用程序级被处理

 

  Checked exception: 这类异常都是Exception的子类 。异常的向上抛出机制进行处理,假如子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。

  Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是非凡的,它们 不能通过client code来试图解决,所以称为Unchecked exception 。

 

 

Error:表示恢复不是不可能但很困难的情况下的一种严重问题,不能通过程序自己解决。比如说内存溢出,只能通过重启程序解决。

          1.总是不可控制的(unchecked)

          2.经常用来用于表示系统错误或低层资源的错误

          3.如何可能的话,应该在系统级被捕捉

 

 

Java中的异常处理机制:

 

     Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常(运行时异常)。违反语义规则包括2种情况:一种是Java类库内置的语义检查。例如数组下标越界时会引发IndexOutOfBoundsException,访问null的对象时会引发 NullPointerException,这类异常可不用TryCatch处理。 只有CheckException可一用Try/Catch块来进行处理,或通过异常链进行抛出。这种情况允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw 关键字引发异常。

 

throwthrows有什么区别:
     
throw关键字一般用于方法内部,用于抛出一个异常类对象,一旦异常被抛出后,throw语句后的程序代码将不会被执行。
     throws
关键字通常出现在方法声明中,用来指定该方法可能抛出的异常。如果可能有多个异常抛出,可以使用逗号将它们分隔开。

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自startkeep.iteye.com/blog/2208934
今日推荐