Java的异常处理基础

来源:互联网 发布:淘宝为什么要交保证金 编辑:程序博客网 时间:2024/06/05 00:20

先看张Java中的异常层次结构图(图来自《Java核心技术 卷1》):
  
  可以看到不管Error还是Exception都继承自Throwable类。
  
  Error和Exception有什么区别:
  
  Error主要是系统的内部的错误(比如JVM出问题了)和资源耗尽错误(内存空间不足),程序无法处理这类问题,只能终止。
  Exception表示程序可以处理的异常,下面看下IOException和RuntimeException的区别。
  
  RuntimeException是因为程序员自身的问题导致的,常见的有:
  ArrayIndexOutOfBoundsException,ArithmaticException,NullPointerException。。。
  
  IOException不是程序本身的问题,比如你读个文件,本来应该有的,结果不知道被谁删了,结果就FileNotFoundException。其它还有EOFException,MalformedURLException之类。。。
  
  下面再来区分两个概念(好多概念。。。):
  未检查异常:将派生于Error类或RuntimeException的所有异常归为未检查异常,编译器不会检查是否为该种异常提供异常处理,作为程序员也不应该去处理。
  已检查异常:未检查异常之外的就叫已检查异常,编译器会检查是否为该种异常提供异常处理。
  
  接着再看几组概念(。。。):
  throws:声明一个方法可能抛出的所有异常信息,出现在方法头,只声明不处理,将异常往上传,谁调用该方法就交给谁处理。
  throw:出现在方法体内,你自定义的异常一定要用throw抛出,程序会在throw语句后立即终止,一旦方法抛出了异常,这个方法就不可能返回到调用者了。只能抛出Throwable子类的对象。
  还有捕获异常,有时间单独写下吧。。。

0 0
原创粉丝点击