Java学习日记之异常部分

一:Java的异常分类

异常对象都派生于Throwable类,如下所示

  1. Error类:系统内部错误,资源耗尽错误
  2. Exception类:分为IOException和RuntimeException异常。其中RuntimeException是程序运行错误导致的异常。
  3. 按照已检查和未检查分类:Error类和RuntimeException类是未检查的异常;IOException是已检查异常。

注意的点:

一个方法必须声明所有可能抛出的已检查异常,抛出异常的方法如下:

throw new EOFException();

创建异常类

如果遇到任何标准异常类都没有能够充分描述清楚的问题,我们只需要定义一个派生于Exception获Exception类子类的的类,如下所示:

class FileFormationException extends IOException
 {public FileFormatExcception(){}
  public FileFormatException(String gripe)
        {
      super(gripe);
       }

 }

然后接下来就可以抛出自己定义的异常了。

捕获异常

try/catch语句块

前面用throw抛出了异常,那总得有代码去处理它吧,try/catch语句块就是用来捕获前面抛出的异常并加以处理,如果try方法中的代码执行没有问题,就跳过catch句块,如果代码执行出现了问题,就执行catch句块,catch可以捕获多个异常,对于捕获到的异常,如果不知道如何处理,则将异常继续传递下去,让调用者去处理。

finally子句

如果try语句块中的方法抛出了异常,则程序会跳过这个方法执行,但是这个方法可能已经占有一些资源,需要将这些资源释放。强烈建议try/catch和try/finally语句块独立使用,这样可以提高代码的清晰度。更值得注意的是,如果try子句中有返回值,而finally子句中也用return 0;跳出方法,这个时候finally子句的返回值会覆盖try子句的返回值。

这一小节就到这里,下一小节我们继续讲异常里面的分析堆栈跟踪元素

你可能感兴趣的:(计算机科学与技术)