原力计划 Java面试题,异常架构篇(精心梳理附带阿里巴巴开发手册+异常习题及答案) Java异常机制.

本文深入探讨了Java异常处理机制,包括Error和Exception的区别、受检异常与非受检异常的特性、Java异常关键字的使用,以及异常处理的最佳实践。通过详细解释各种异常类型和关键字,如try-catch-finally、throw和throws,帮助读者掌握Java异常处理的核心概念。此外,文章还提供了常见的Java面试题,帮助准备面试的人巩固相关知识。
摘要由CSDN通过智能技术生成
  • Java异常面试题(精心整理),你准备好接招了吗?求怕累!
  • 内容最后附带阿里巴巴开发手册,整合不易,还请大家认真阅读,并一键三连加关注,给博主一些支持,谢谢了! 笔芯 ❤

正在上传…重新上传取消

文章目录

  • Java异常架构与异常关键字
    • 一. Error 和 Exception 区别是什么?
    • 二. 运行时异常和一般异常(受检异常)区别是什么?
    • 三. JVM 是如何处理异常的?
    • 四. throw 和 throws 的区别是什么?
    • 五. final、finally、finalize 有什么区别?
    • 六. NoClassDefFoundError 和 ClassNotFoundException 区别?
    • 七. try-catch-finally 中哪个部分可以省略?
    • 八. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
    • 九. 类 ExampleA 继承 Exception,类 ExampleB 继ExampleA。
    • 十. 常见的 RuntimeException 有哪些?
    • 一. 在 finally 块中清理资源或者使用 try-with-resource 语句
      • 1.使用 finally 代码块
      • 2. Java 7 的 try-with-resource 语
    • 三. 对异常进行文档说明
    • 四. 使用描述性消息抛出异常
    • 五. 优先捕获最具体的异常
    • 六. 不要捕获 Throwable 类
    • 八. 不要记录并抛出异常
    • 九. 包装异常时不要抛弃原始的异常
    • 十. 不要使用异常控制程序的流程
  • 异常处理-阿里巴巴Java开发手册

Java异常架构与异常关键字

一. Java异常简介

Java异常是Java提供的一种识别及响应错误的一致性机制。

二. Java异常架构

1. Throwable

  • Throwable 是 Java 语言中所有错误与异常的超类(父类)
  • Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。
  • Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。

2. Error(错误)

  • 定义:Error 类及其子类。程序中无法处理的错误,表示运行应用程序中出现了严重的错误。
  • 特点:此类错误一般表示代码运行时 JVM 出现问题。通常有 Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如 OutOfMemoryError:内存不足错误;StackOverflowError:栈溢出错误。此类错误发生时,JVM 将终止线程。
  • 这些错误是不受检异常,非代码性错误。因此,当此类错误发生时,应用程序不应该去处理此类错误。按照Java惯例,我们是不应该实现任何新的Error子类的!

3. Exception(异常)

  • 程序本身可以捕获并且可以处理的异常。Exception 这种异常又分为两类:运行时异常和编译时异常。

运行时异常

  • 定义: RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。
  • 特点: Java 编译器不会检查它。也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用try-catch语句捕获它",还是会编译通过。比如NullPointerException空指针异常、ArrayIndexOutBoundException数组下标越界异常、ClassCastException类型转换异常、ArithmeticExecption算术异常。此类异常属于不受检异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。虽然 Java 编译器不会检查运行时异常,但是我们也可以通过 throws 进行声明抛出,也可以通过 try-catch 对它进行捕获处理。如果产生运行时异常,则需要通过修改代码来进行避免。例如,若会发生除数为零的情况,则需要通过代码避免该情况的发生!
  • RuntimeException 异常会由 Java 虚拟机自动抛出并自动捕获 (就算我们没写异常捕获语句运行时也会抛出错误!!) ,此类异常的出现绝大数情况是代码本身有问题应该从逻辑上去解决并改进代码。

编译时异常

  • 定义: Exception 中除 RuntimeException 及其子类之外的异常。
  • 特点: Java 编译器会检查它。如果程序中出现此类异常,比如 ClassNotFoundException(没有找到指定的类异常),IOException(IO流异常),要么通过throws进行声明抛出,要么通过t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值