异常就是Java程序在运行过程中出现的错误。
编译时异常
Java程序必须显示处理,否则程序就会发生错误,无法通过编译运行时异常
无需显示处理,也可以和编译时异常一样处理举个栗子:
package com.zero.mm; public class MM { private String name; private int size; public MM() { super(); } public MM(String name, int size) { super(); this.name = name; this.size = size; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } @Override public String toString() { return "MM [name=" + name + ", size=" + size + "]"; } public void makeMyGirlFriend() throws Exception{ if(size > 42) System.out.println(name+" is "+"my"+" girl"); else throw new Exception("you are not Suitable"); } //如果抛的是运行时异常的话是不用再方法上声明的. // public void makeMyGirlFriend(){ // if(size > 42) // System.out.println(name+" is "+"my"+" girl"); // else // throw new RuntimeException("you are not Suitable"); // } }面试题1
final,finally和finalize的区别 其实他们样子很像,当用处一点关系都没有,压根是面试官显摆的. final—–可以修饰类,方法,变量,由于是最终的意思,所以该类不能被继承,该方法不能被重写,该变量只能赋值一次.finally—-是try 语句中的一个语句题,不能单独使用,用来释放资源的
finalize— 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。(Object 类中的一个方法.)
面试题2
如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后。(其实是先将结果给return ,然后检查是否有 finally 的语句,就执行finally 中的语句体,最后彻底返回 .)还有一点是切记不要在finally 语句中return 数据.举个例子
/* 最后返回的结果是 30 */ public static int getSize() { int size = 10; try { size = 20; int i = 100 /0; return size; } catch (Exception e) { size = 30; System.out.println("异常了"); return size; } finally { size = 40; // return size; } }