Java学习之异常

1.简述什么是异常、异常的继承体系?
Java代码在运行时期发生的问题就是异常。
异常的继承体系:
Throwable: 它是所有错误与异常的超类(祖宗类)
  |- Error 错误
  |- Exception 编译期异常,进行编译JAVA程序时出现的问题
  |- RuntimeException 运行期异常, JAVA程序运行过程中出现的问题

2.简述异常的处理方式?
异常的处理方式:
a:JVM的默认处理方式
把异常的名称,原因,位置等信息输出在控制台,同时会结束程序。
一旦有异常发生,其后来的代码不能继续执行。
b:解决程序中异常的手动方式
a):编写处理代码 try...catch...finally
b):抛出 throws

3.throw和throws关键字的使用位置和格式?
throw:
使用位置:方法内部
使用格式:throw new 异常类名(参数);
throws:
使用位置:方法声明上
使用格式:修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2… { }

4.多个catch处理的注意事项?
有顺序:
平级异常:抛出的异常类之间,没有继承关系,没有顺序
上下级关系的异常:越高级的父类,越写在下面

5.简述finally关键字的特点和作用?
* A: finally的特点
* 被finally控制的语句体一定会执行
* B:finally的作用
* finally,无论程序是否有异常出现,程序必须执行释放资源。
如:IO流操作和数据库操作中会见到

6.Throwable类的常见方法及方法描述?
a:getMessage()方法
返回该异常的详细信息字符串,即异常提示信息

b:toString()方法
返回该异常的名称与详细信息字符串

c:printStackTrace()方法
在控制台输出该异常的名称与详细信息字符串、异常出现的代码位置

7.自定义异常的格式?
class 异常名 extends Exception{ //或继承RuntimeException
  public 异常名(){
  }
  public 异常名(String s){
    super(s);
  }
}

面试题:

1、 throw 和throws 的区别是什么
throw
定义在方法中,后边跟的是异常对象
同时只能抛出一个异常对象

throws
定义在方法的声明上,后边跟的是异常的类型
后边同时可以跟多个数据类型


2、 finally 返回路径面试题
finally :在正常情况下,肯定执行的代码
在try中return,在finally中修改:
//返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,无论方法内有任何的改变,返回路径中的这个值一致不变。

/**
 * 返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,
 *   无论方法内有任何的改变,返回路径中的这个值一直不变。
 * @author vanguard
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        System.out.println(method());
    }
    public static int method() {
        int i = 0;
        try {
            System.out.println(1/0);
            return i;
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            i = 200;
            System.out.println("我一定会运行");
        }
        return i;
    }
}

运行结果是

200

原文地址:https://www.cnblogs.com/guodong-wang/p/7202652.html