1. final,finally 和 finalize的区别
a. final 最终的意思,修饰类,变量(成员变量和局部变量),成员方法
修饰类之后,该类不能被继承
修饰变量之后,该变量变成自定义常量
修饰方法之后,该方法不能被子类覆盖
b. finally 修饰代码块
finally代码块的执行特征是:
1. 对于try-catch-finnally代码块而言,finally代码块中的代码,不管是否发生异常,
finally代码块中的代码,最后都会执行
2. 即使在finally代码块之前,有return语句,finally代码块,仍然会执行
3. 特殊情况不执行:在执行到finally之前jvm退出了(比如System.exit(0))
c. finalize()
Object类中的一个方法.该方法,在对象变成垃圾,并且被垃圾回收期调用之前,jvm会在该对象上调用 finalize()方法一次且一次.
2. 定义三种新类型的异常。 写一个类,在该类的三个方法中抛出三种不同的异常。 然后在mian方法中调用这个类的不同方法,尝试用try catch捕获你写的异常。
public class day1802 {
public static void main(String[] args) {
//创建子类对象
ExceptionCast exceptionCast = new ExceptionCast();
//处理第一种自定义编译时异常
try {
exceptionCast.genFirstException();
} catch (MyFirstException e) {
e.printStackTrace();
}
//处理第二种自定义运行时异常
try {
exceptionCast.genSecondException();
} catch (Exception e) {
e.printStackTrace();
}
//处理第三种自定义编译时异常
try {
exceptionCast.genThirdException();
} catch (MyThirdException e) {
e.printStackTrace();
}
}
}
class ExceptionCast {
//抛出第一种编译时异常方法
public void genFirstException() throws MyFirstException {
throw new MyFirstException("第一种编译时类型的异常");
}
//抛出第二种运行时异常方法
public void genSecondException() {
throw new MySecondException("第二种运行时类型的异常");
}
//抛出第二种编译时异常方法
public void genThirdException() throws MyThirdException {
throw new MyThirdException("第三种编译时类型的异常");
}
}
//三个自定义的类
//第一种自定义编译时异常
class MyFirstException extends Exception {
public MyFirstException(String msg) {
super(msg);
}
}
//第二种自定义运行时异常
class MySecondException extends RuntimeException {
public MySecondException(String msg) {
super(msg);
}
}
//第三种自定义编译时异常
class MyThirdException extends Exception {
public MyThirdException(String msg) {
super(msg);
}
}
定义三个异常,然后定义一个ExceptionCast类,类中含有抛出三个异常的方法.最后在main方法中调用方法,用try-catch捕获异常.