面试题-Java基础(七)- 异常

1、throw和throws的区别?

  • throws 是用来声明方法可能抛出的所有异常,但只负责抛出异常,由调用者来处理所抛出的异常。
  • throw是抛出一个具体的异常类型

2、final,finally和finalize的区别?

  • final 是一个关键字,可以修饰类,方法,变量,修饰类则类不可以被继承,修饰方法则方法不可以被反写,修饰变量,则变量初始化之后不可以被重新复制。final详解
  • finally 一般出现在try catch代码块中,在异常处理中,我们通常会将一定要处理的代码放在finally里。表示无论是否出现异常都要执行这部分代码。多用于释放一些资源。
  • finalize 是一个方法,是object的公共方法,一般在垃圾回收机制中会对其进行调用。

3、try-catch-finally哪部分可以省了?

catch可以省略。

原因:try 用于处理运行是一场,try+catch 用于处理普通一场和运行时异常。

运行时异常:RuntimeException类及其子类异常。如空指针,数据越界等,这些不会被检测出来的异常。程序可以对其进行捕获,也可以不捕获,

非运行时异常:属于Exception类和其子类,必须进行catch处理,否则无法通过编译。如SQLException,IOException或者用户自定义的异常。

4、try-catch-finally中,如果catch中return了,还会执行finally吗?

会的,会在return前执行。注意:finally和catch中都有return的情况

private static int test2() {
    Map map = null;
    try{
        return map.size();
    }catch (Exception e){
        System.out.println("异常了");
        return 1;
    }finally{
        System.out.println("finally");
        return 2;
    }
}
// 执行结果是:
// 异常了
// finally
// test2 return :2

存在不执行finally的情况:

  • 在try或者catch中执行了System.exit(0);
  • try语句进入了死循环
  • 在执行finally之前JVM崩溃了
  • 断电

5、Error 和 Exception的区别?

Error和Exception都是继承Throwable类的,java里面只有Throwable实例才可以抛出或者捕获异常。Error和Exception是对不同异常情况的分类。

Error:正常情况下不大可能出现的情况,绝大部分的Error都会导致程序(比如JVM自身)处于非正常状态,不可恢复状态;例如:OutOfMemoryError 内存溢出

Exception:指的是程序正常运行过程中,可以预料到的异常情况,会对其进行捕获后处理,不影响程序运行。

  • 受查异常:可检查的异常必须在代码中进行显示的捕获处理,这是编译期检查的一部分。所有继承了Exception或者IOException的异常都是受查异常。
  • 不受查异常:不可查的异常指的是运行时异常RuntimeException,类似NullPointerException、ArrayIndexOutOfBoundsException之类的,通常可以编码避免逻辑错误,可以根据情况是否进行捕获,无编译期强制要求。

6、常见的异常有哪些?

受查异常:

  • SQLException:提供关于数据库访问错误或其他错误信息的异常。
  • FileNotFoundException:当试图打开指定路径名表示的文件失败时,抛出此异常。
  • IOException:当发生某种I/O异常时,抛出此异常。此类是失败或中断的I/O操作生成的异常的通用类。
  • ClassNotFoundException:当应用程序运行的过程中尝试使用类加载器去加载Class文件的时候,如果没有在classpath中查找到指定的类

不受查异常【运行时异常】:

  • NullPointerException:当应用程序试图访问空对象时,则抛出该异常。
  • IndexOutOfBoundsException:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
  • ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出该异常。
  • ArrayStoreException:试图将错误类型的对象存储到一个对象数组时抛出的异常。
  • NoSuchMethodException:无法找到某一特定方法时,抛出该异常。
  • UnsupportedOperationException:当不支持请求的操作时,抛出该异常。
  • IllegalArgumentException:抛出的异常表明向方法传递了一个不合法或不正确的参数。

 

下一章 网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值