Java异常->常见面试题汇总

简介: Java异常->常见面试题汇总

Java异常->常见面试题汇总


1. Java中异常的分类

1>. 父类:Throwable


(1) Throwable:位于 java.lang包中,是所有错误、异常的父类
(2) 常见 方法:
    a.String getMessage():返回字符串类型异常信息,给用户做提示信息
    b.void printStackTrace():打印跟踪方法调用栈而获取的详细异常信
                              息,作用:用于开发人员做程序调试,建
                              议在catch中调用,尽可能不要省略

2>. 子类:Error,是Throwable直接子类,代表错误


 (1) 特点:代表仅靠程序本身无法恢复的严重错误
 (2) 案例:
    内存溢出:java.lang.StackOverflowError(栈溢出)、
            OutOfMemoryError堆溢出
 (3) 处理:一旦遇到 Error,无法靠程序处理(不要试图捕获)          


3>. 子类:Exception,是Throwable直接子类,代表异常


   (1) RuntimeException:运行时异常、未检查异常
       a. 定义:RuntimeException异常及子类或是间接子类统称为运行时异常
       b. 特点:运行时异常在编译过程中编译器不会检测此类异常,运行时报错
       c. 处理:可以处理也可以不处理,可以通过规范代码避免
       d. 案例:常见的运行时异常:
          I.java.lang.ClassCastException:类型转换异常
          II. java.lang.NullPointerException:空指针异常
          III.java.lang.ArrayIndexOutOfBoundsException
                               :数组下标越界
          IV.java.lang.StringIndexOutOfBoundsException:
                                  字符串下标越界
          V. java.lang.IndexOutOfBoundsException:List集合下标越界
          VI. java.lang.NumberFormatException:数字的格式转换异常
   (2) 非RuntimeException:非运行时异常 已检查异常(CheckedException)
       a. 定义:和RuntimeException没有任何继承关系的异常类统称为非运行
               时异常
       b. 特点:编译过程中编译器检测此类异常,在编译过程中报错
       c. 处理:必须处理,如果不处理,无法运行
               注意:编译报错有两种情况:
                    I. 语法出现错误
                    II. 有可出现非运行时异常
       d. 案例: Class.forName("TestStudent"); // 出现非运行时异常


2. 写出 throw 和 throws 的区别。


 throw用于手动产生异常,定义在方法内部
        语法:throw new 异常类名();
 throws用于消极处理异常,定义在方法的声明位置
       修饰符 返回值类型 方法名(形参列表)throws 异常类名{}


3. 写出 final 、finalize、finally的区别

final:修饰符,可以修饰变量、方法、类

final修饰的变量作用范围内常量

final修饰的方法允许继承不允许被覆盖

final修饰的类不能被继承,即没有子类

finalize:方法名,垃圾回收器回收垃圾对象时,jvm自动调用方法

finally:应用积极处理异常try…catch…finally中,必须执行的语句

4. 方法覆盖的要求。


子类的方法名、形参列表、返回值类型和父类相同


子类的方法修饰符和父类相同或是比父类更宽


子类的方法不能抛出比父类更宽的异常


5. 手动写出一个自定异常类MyException.


定义一个类继承Exception或是其子类,如果基于定义的类抛出异常为运行时异常,则需要继承RuntimeException或是其子类


提供两个构造方法:


  (1) 无参数的构造方法
   (2) 带有String类型参数的构造方法,参数代表异常信息,借助
       super(message) 为父类属性massage 赋值
目录
相关文章
|
2天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
2天前
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
|
6天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
11天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
3天前
|
IDE 前端开发 Java
怎样避免 Java 中的 NoSuchFieldError 异常
在Java中避免NoSuchFieldError异常的关键在于确保类路径下没有不同版本的类文件冲突,避免反射时使用不存在的字段,以及确保所有依赖库版本兼容。编译和运行时使用的类版本应保持一致。
|
4天前
|
Java 编译器
如何避免在 Java 中出现 NoSuchElementException 异常
在Java中,`NoSuchElementException`通常发生在使用迭代器、枚举或流等遍历集合时,尝试访问不存在的元素。为了避免该异常,可以在访问前检查是否有下一个元素(如使用`hasNext()`方法),或者使用`Optional`类处理可能为空的情况。正确管理集合边界和条件判断是关键。
|
1天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
9 2
|
7天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
26 4
|
8天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
41 4
|
7天前
|
Java
Java异常捕捉处理和错误处理
Java异常捕捉处理和错误处理
11 1