74. throw 和 throws 的区别? 75. final、finally、finalize 有什么区别? 76. try-catch-finally 中哪一个部分能够省略? 77. try-catch-finally 中,若是 catch 中 return 了,finally 还会执行吗? 78. 常见的异常类有哪些?
异常java
74. throw 和 throws 的区别?数据库
throw:数组
throws:安全
75. final、finally、finalize 有什么区别?指针
76. try-catch-finally 中哪一个部分能够省略?code
答:catch 能够省略orm
缘由:对象
更为严格的说法实际上是:try只适合处理运行时异常,try+catch适合处理运行时异常+普通异常。也就是说,若是你只用try去处理普通异常却不加以catch处理,编译是通不过的,由于编译器硬性规定,普通异常若是选择捕获,则必须用catch显示声明以便进一步处理。而运行时异常在编译时没有如此规定,因此catch能够省略,你加上catch编译器也以为无可厚非。排序
理论上,编译器看任何代码都不顺眼,都以为可能有潜在的问题,因此你即便对全部代码加上try,代码在运行期时也只不过是在正常运行的基础上加一层皮。可是你一旦对一段代码加上try,就等于显示地承诺编译器,对这段代码可能抛出的异常进行捕获而非向上抛出处理。若是是普通异常,编译器要求必须用catch捕获以便进一步处理;若是运行时异常,捕获而后丢弃而且+finally扫尾处理,或者加上catch捕获以便进一步处理。继承
至于加上finally,则是在无论有没捕获异常,都要进行的“扫尾”处理。
77. try-catch-finally 中,若是 catch 中 return 了,finally 还会执行吗?
答:会执行,在 return 前执行。
代码示例1:
/* * 若是catch里面有return语句,finally里面的代码还会执行吗? */ public class FinallyDemo2 { public static void main(String[] args) { System.out.println(getInt()); } public static int getInt() { int a = 10; try { System.out.println(a / 0); a = 20; } catch (ArithmeticException e) { a = 30; return a; } finally { a = 40; } } }
执行结果:30
代码示例2:
package com.java_02; /* * 若是catch里面有return语句,finally里面的代码还会执行吗? */ public class FinallyDemo2 { public static void main(String[] args) { System.out.println(getInt()); } public static int getInt() { int a = 10; try { System.out.println(a / 0); a = 20; } catch (ArithmeticException e) { a = 30; return a; } finally { a = 40; return a; //若是这样,就又从新造成了一条返回路径,因为只能经过1个return返回,因此这里直接返回40 } } }
执行结果:40
78. 常见的异常类有哪些?