码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java异常面试题


    Java常见面试题_2022最新版

    序号内容链接
    1Java基础面试题https://blog.csdn.net/weixin_46030002/article/details/126399353
    2Java集合容器面试题https://blog.csdn.net/weixin_46030002/article/details/126425298
    3Java线程面试题https://blog.csdn.net/weixin_46030002/article/details/126518395
    4Java异常面试题https://blog.csdn.net/weixin_46030002/article/details/126482778
    5Spring常见面试题https://blog.csdn.net/weixin_46030002/article/details/127281194
    6SpringMVC常见面试题https://blog.csdn.net/weixin_46030002/article/details/127057785
    7Mybatis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126026561
    8MySQL常见面试题https://blog.csdn.net/weixin_46030002/article/details/126557564
    9Redis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126435834
    • Java常见面试题_2022最新版持续更新中…

    文章目录

    • Java常见面试题_2022最新版
      • 一、异常基本概念的了解
        • 1. 什么是异常
        • 2. 异常的分类
          • 2.1. Throwable
          • 2.2 Error(错误)
          • 2.3 Exception(异常)
            • 2.3.1 运行时异常
            • 2.3.2 编译时异常
          • 2.4 异常还可以如下分类
            • 2.4.1 检查异常
            • 2.4.2 非检查异常
        • 3. Java异常处理
          • 3.1 异常处理关键字
          • 3.2 异常处理分类
      • 二、常见面试题
        • 异常的父类及继承关系
        • error 与 exception 的区别
        • 处理异常的方式有哪些
        • throw 和 throws 的区别
        • 常见的异常
        • 常见的运行时异常有哪些
        • final,fianlly,finalize 的区别
        • try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的代码会不会被执行,什么时候被执行,在 return 前还是后?
        • 什么样的异常可以不需要 try...catch 或 throws


    一、异常基本概念的了解

    1. 什么是异常

    异常,见名知意思,就是错误,不正确的意思。在java语言中,异常是Java提供的一种识别及响应错误的一致性机制。将程序发生的不正常情况称为 异常。

    2. 异常的分类

    2.1. Throwable

    Throwable 是 Java 语言中所有错误与异常的超类(基类)。

    Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。

    2.2 Error(错误)

    定义:Error 类及其子类。程序中无法处理的错误,表示运行应用程序中出现了严重的错误。

    2.3 Exception(异常)

    定义:Exception 类及其子类。 程序本身可以捕获并且可以处理的异常。

    2.3.1 运行时异常

    RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。

    2.3.2 编译时异常

    Exception 中除 RuntimeException 及其子类之外的异常。

    在这里插入图片描述

    2.4 异常还可以如下分类
    2.4.1 检查异常

    编译器要求必须处理的异常。正确的程序在运行过程中,经常容易出现的、符合预期的异常情况。一旦发生此类异常,就必须采用某种方式进行处理。除 RuntimeException 及其子类外,其他的 Exception 异常都属于受检异常。编译器会检查此类异常,也就是说当编译器检查到应用中的某处可能会此类异常时,将会提示你处理本异常——要么使用try-catch捕获,要么使用方法签名中用 throws 关键字抛出,否则编译不通过。

    2.4.2 非检查异常

    编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类异常时,即使我们没有try-catch捕获它,也没有使用throws抛出该异常,编译也会正常通过。该类异常包括运行时异常(RuntimeException极其子类)和错误(Error)。
    在这里插入图片描述

    3. Java异常处理

    3.1 异常处理关键字
    • 处理异常
      • try
      • catch
      • finally
    try{
        // 可能产生异常的代码    
    }catch(Exception e){
        // 异常处理方式1
    }catch(Exception e){
        // 异常处理方式2
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 抛出异常
      • throw
      • throws
    public void throwTest() throws Exception {
    	throw new Exception();
    }
    
    • 1
    • 2
    • 3
    3.2 异常处理分类

    在这里插入图片描述

    二、常见面试题

    异常的父类及继承关系

    • Throwable
      • Exception(异常)
      • Error(错误)

    error 与 exception 的区别

    • error 系统级别的异常(错误)
      • 通常指的是JVM虚拟机相关的错误(系统崩溃,内存不足,堆栈溢出),一旦发生就会终止。
    • exception 可以捕获处理的异常,出现错误,对其进行处理,程序可以继续正常运行。
      运行时异常:RuntimeException 及其子类
      编译时异常:不是 RuntimeException 及其子类的异常(Checked Exception),比如IOException

    处理异常的方式有哪些

    • 抛出
      • throw
      • throws
    • 处理
      • try…catch…finally

    throw 和 throws 的区别

    • throw:是指真实抛出一个异常
    • throws:声明可能抛出一个异常

    区别:

    • throws 出现在方法的声明中;throw 出现在方法体中
    • throws 表示出现异常的一种可能性,但是并不一定会发生这种异常;throw 则表示抛出了异常,执行一定会抛出这种对应的异常

    常见的异常

    • IndexOutOfBoundsException : 下标越界异常
      • ArrayIndexOutOfBoundException:数组下标越界异常
      • StringIndexOutOfBoundException:字符串下标越界异常
    • NullPointException : 空指针异常
    • ClassCaseException : 数据类型转换异常
    • IllegalArgumentException : 非法参数异常
    • ArithmeticException - 计算异常
    • SecurityException : 安全性异常
    • NumberFormatException : 字符串转换为数字异常
    • IOException : IO 异常
      • FileNotFoundException : 文件没有找到异常
    • SQLException : 数据库异常
    • NoSuchMethodException : 方法不存在异常

    常见的运行时异常有哪些

    • IndexOutOfBoundsException : 下标越界异常
      • ArrayIndexOutOfBoundException:数组下标越界异常
      • StringIndexOutOfBoundException:字符串下标越界异常
    • NullPointException : 空指针异常
    • ClassCaseException : 数据类型转换异常
    • IllegalArgumentException : 非法参数异常
    • NumberFormatException : 字符串转换为数字异常
    • ConcurrentModificationException:并发修改异常
    • SecurityException : 安全性异常
    • ArithmeticException - 计算异常

    final,fianlly,finalize 的区别

    • final:final 是最终的意思,可以修饰变量,方法,类;用于声明变量,方法和类,分别表示被其修饰的变量不可变,被其修饰的方法不可重写,被其修饰的类不可继承。
    • finally:异常处理机制中处理语句结构的一部分,try…catch 后面,表示必定会执行,我们常用的是关闭资源。
    • finalize:Object 类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。该方法更像是一个对象生命周期的临终方法,当该方法被系统调用则代表该对象即将“死亡”,但是需要注意的是,我们主动行为上去调用该方法并不会导致该对象“死亡”(可能不会马上执行,像是做了提醒动作),这是一个被动的方法(其实就是回调方法),不需要我们调用。

    try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的代码会不会被执行,什么时候被执行,在 return 前还是后?

    会执行,在方法返回前执行
    我们一般不会在 finally 中改变返回值,因为如果存在 finally 代码块,try 中的 return 语句就不会立即返回给调用方,而是记录下来,或者理解为作为一个临时变量存储下来;待 finally 语句块执行完毕后再向调用方返回值,如果这个值被修改就会返回修改后的值。

    什么样的异常可以不需要 try…catch 或 throws

    RuntimeException 及其子类异常

    • 持久更新中…
  • 相关阅读:
    数据结构:赫夫曼树
    高校教务系统登录页面JS分析——广东工业大学
    校园一卡通系统
    [pytorch] 2D + 3D ResNet代码实现, 改写
    Java并发编程—线程详解
    Android如何连接metamask并签名
    使用华为RH2288服务器搭建iSCSI共享存储(含ESXi映射步骤)
    数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法...
    【语音识别】MFCC+VAD端点检测智能语音门禁系统【含GUI Matlab源码 451期】
    如何使用Git和GitHub进行版本控制
  • 原文地址:https://blog.csdn.net/weixin_46030002/article/details/126482778
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号