:1,函数内容如果抛出需要检测的异常,那么函数上必须要声明。否则必须在函数内用try catch捕捉,否则编译失败。(注意:RuntimeException除外;也就是说如果函数内抛出的是RuntimeException异常,函数上可以不用声明)
2,如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败。
3,什么时候catch,什么时候throws 呢? (1)功能内容可以解决,用catch。(需要定义针对性的处理方式,不要简单的定义printStackTrace输出语句) (2)解决不了,用throws告诉调用者,由调用者解决。
4,一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理。内部有几个需要检测的异常,就抛几个异常,抛出几个,就catch几个。(多个catch,父类的catch放到最下面)
5,子类在覆盖父类方法时,子类抛出的异常必须是父类的异常的子类或者子集。如果父类或者接口没有异常抛出时,子类覆盖出现异常,那么子类覆盖时就只能try不能抛。异常的好处和弊端:好处就是,将正常流程代码和问题处理代码分离。提高阅读性。而弊端就体现在代码上,不得不仔细找出来每一个异常,并进行相关的处理方式,每一种都会牵扯出一段代码,造成代码结构臃肿。 |
|