黑马程序员技术交流社区

标题: 异常小总结 [打印本页]

作者: 小王在黑马    时间: 2015-8-5 14:13
标题: 异常小总结
1.1 Error和Exception 区别
  Throwable:
    |——Error:错误,一般情况下不便携针对性的代码进行处理,需要对程序代码进行修正。
  属于编译时的错误,编译不通过就不会有相应的class文件
    |——Exception:异常,可以有针对性代码进行处理。

1.2 throw和throws的区别
  throw:是在函数内抛出异常对象,当抛出的异常不是RuntimeException子类时,需要在函数名上throws。
  throws:是在函数上抛出异常类,可以抛出多个异常类,类与类之间用逗号隔开。
ps:无论是throw,还是throws 都是希望调用者去处理异常的。

1.3 编译时被检查的异常和运行时的异常区别
  1、编译时被检查的异常:只要是Exception及其子类都是编译时被检测的异常。
      编译时的异常必须在函数内抛出,在函数上声明,否则编译失败
      声明的原因是需要调用者去处理。

  2、运行时的异常:其中Exception有一个特殊的子类RuntimeException,他和它的子类是运行时异常,是编译时不被检测的。
      运行时的异常在函数内抛出,不需要再函数名上声明,
      不声明的原因是:不需要调用者处理,运行时异常发生了,程序就停止了,调用者必须对代码进行修改。

1.4 对于异常什么时候try,什么时候throws呢?
  功能内部出现异常,内部可以处理,就用try。如果功能内部处理不了,就必须throws声明出来,让调用者处理。

1.5 子类对父类异常的操作
  1、当子类覆盖父类的方法时,父类的方法抛出异常,那么子类的方法要么try要么抛出此异常和改异常的子类,不能抛出其他异常。
  2、如果父类抛出了多个异常,那么子类在覆盖时只能抛出父类异常的子集。
  3、如果父类或者接口中没有抛出异常,那么子类不可以抛出异常,此时出现了异常只能try。如果try解决不了,就可以throw抛出RuntimeException异常或其子类。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2