一个面试必问的知识点:java中的异常

简介: java的异常是一个面试高频问题,而且在学习java的时候也是一个基础而且重要的问题。这篇文章结合着面试问题对java的异常体系进行一个梳理。

1、体系梳理


Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。其中 Error 用来表示 JVM 无法处理的错误,Exception 又分为两种:


(1)受检异常 :需要用 try…catch… 语句捕获并进行处理,并且可以从异常中恢复;

(2)非受检异常 :是程序运行时错误,例如空指针异常。

v2-8aea704902cda3866941271653574894_1440w.jpg2、异常处理


对于不同的异常,java采用不同的异常处理方式:


(1)Error(错误):一般表示代码运行时JVM出现问题。比如NoClassDefFoundError等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。


(2)运行异常将由系统自动抛出,应用本身可以选择处理或者忽略该异常。


(3)可查异常必须进行捕获或者抛出该方法之外交给上层处理。要么使用try-catch捕获,要么throws该异常。


3、面试题



(1)检查型异常和非检查型异常有什么区别


检查型异常和非检查型异常的主要区别在于其处理方式。检查型异常都需要使用try,catch 和finally 关键字在编译器进行处理,否则会出现编译器报错。对于非检查型异常则不需要这样做。Java中所有继承 Exception 的类的异常都是检查型异常,所有继承RuntimeException 的异常都被称为非检查型异常。


(2)error和exception有什么区别


这里主要是对概念的理解。error 表示恢复不是不可能但很困难的情况下的一种严重问题。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。


(3)final, finally, finalize的区别?


final是一个java关键字,用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。这个是在笔试当中常考的一个知识点。


finally是异常处理语句结构的一部分,表示finally里面的代码块一定会执行。。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。


(4)常见的异常


NullPointException:空指针异常,Jdk8里面可以用Optional对象来避免。

IndexOutOfBoundsException:数组下标越界。

NumberFormatException:数字类型转化异常。

ClassCastException:类型转换异常,发生在强转时。

FileNotFoundException:找不到指定文件。

ClassNotFoundException:在classpath中找不到引用的类缺乏引用当前类的jar或没有设置classpath或jar损坏-,找到jar并放入classpath中或检查jar是否损坏

OutOfMemoryError:内存溢出异常,增大初始化堆:-Xms 增加最大值:-Xmx

NoClassDefFoundError:找不到相应的类错误,缺乏当前引用类的jar或jar版本不对。ConcurrentModificationException:并发修改异常。

NoSuchMethodError:类里找不到相应的方法,一般是jar版本不对。

UnsupportedClassVersionError:版本不支持错误。

StackOverflowError:栈溢出错误,一般是函数的死循环。

相关文章
|
1天前
|
缓存 Java 数据库连接
java面试题目 强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?
【6月更文挑战第28天】在 Java 中,理解和正确使用各种引用类型(强引用、软引用、弱引用、幻象引用)对有效的内存管理和垃圾回收至关重要。下面我们详细解读这些引用类型的区别及其具体使用场景。
10 3
|
2天前
|
SQL 存储 前端开发
程序技术好文:面试知识点六:JavaWeb
程序技术好文:面试知识点六:JavaWeb
|
2天前
|
Java API 数据安全/隐私保护
如何在Java中处理InvalidKeyException异常?
如何在Java中处理InvalidKeyException异常?
|
2天前
|
安全 算法 Java
java多线程面试题2019整理
java多线程面试题2019整理
|
1天前
|
Java
使用try-catch捕获Java中的异常详解
使用try-catch捕获Java中的异常详解
|
2天前
|
安全 Java
如何在Java中优雅地处理ConcurrentModificationException异常?
如何在Java中优雅地处理ConcurrentModificationException异常?
|
2天前
|
Java 编译器 索引
解决Java中的NoSuchElementException异常的常见方法
解决Java中的NoSuchElementException异常的常见方法
|
2天前
|
负载均衡 NoSQL Dubbo
java分布式面试快问快答
java分布式面试快问快答
10 0
|
2天前
|
XML Java 数据库连接
面试必备!Java核心技术100+面试题
面试必备!Java核心技术100+面试题
|
2天前
|
算法 Java 调度
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
7 0