首页 > 编程语言 >每日一道Java面试题:说一说Java中的异常

每日一道Java面试题:说一说Java中的异常

时间:2024-02-02 09:02:26浏览次数:24  
标签:面试题 说一说 Java 检查 子类 代码 Exception 异常

写在开头

任何一个程序都无法保证100%的正常运行,程序发生故障的场景,我们称之为:异常,在Java中对于异常的处理有一套完善的体系,今天我们就来一起学习一下。
老样子,用一段简单的代码开始今天的学习。

我:“小二,上代码!”

JavaBuild君:“好嘞!几位爷,里面请~”

【代码示例1】

//Java中经典的算术异常!
public class Test {
    public static void main(String[] args){
        System.out.println(1/0);
    }
}

编译通过,但运行时提示ArithmeticException(算术异常),这是典型的Java异常场景。

异常的分类

看完上面的内容,想必大家对于Java中的异常已经有了一个基本的了解了,其实,在Java中异常的分类有很多种,我们通过一个思维导图,快速了解。

在Java中有个Throwable类,为所有异常的祖先类,其下又分为两个子类,分别为Exception(异常)和Error(错误)。

Exception和Error的区别

  • Exception:程序本身可以处理的异常,可以通过catch或throw、throws进行捕获处理或抛出。
  • Error:程序无法自处理的错误!虚拟机错误、内存溢出、IO错误等。

受检查异常与非受检查异常

在Exception类下又分为两个子类:Checked Exception (受检查异常) 和 Unchecked Exception (不受检查异常)。

  • CheckedException:受检查异常,范围在编译期,此时若发生异常,无法通过编译,代码爆红。

受检查异常范围:IO 相关的异常、ClassNotFoundException、SQLException等,或者说除了运行时异常(RuntimeException)及其子类外,其他的异常几乎都是受检查异常。

  • UncheckedException:非受检查异常,顾名思义,即便存在该类型异常,代码也可通过编译,比如代码示例1中的算术异常,只是会在运行时报错,那它的涉及范围就好猜了,没错!就是RuntimeException及其子类!

RuntimeException

运行时异常有下面包含了很多子类,常用的有

1、NullPointerException(空指针异常)
2、IllegalArgumentException(非法参数异常)
3、NumberFormatException(字符串转换为数字格式异常,IllegalArgumentException的子类)
4、ArrayIndexOutOfBoundsException(数组越界异常)
5、ClassCastException(类型转换异常)
6、ArithmeticException(算术异常)
7、SecurityException (安全错误比如权限不够)
8、UnsupportedOperationException(不支持的操作异常,比如重复创建同一用户)
...

处理异常的2种方式

其实在上文中也已经提到了处理异常的2种方式,通过catch进行捕获,错误信息打印到控制台,或者打印到配置好的日志系统中;或者通过throws一层层的向上抛,直到调用者处理这个异常。

【代码示例2】

public class Test {
    public static void main(String[] args) throws FileNotFoundException {

        String name = "JavaBuild";
        File file = new File(name);
        //方式一,throws抛出
        FileInputStream fileInputStream1 = new FileInputStream(file);

        //方式二,catch捕获,打印至控制台
        try {
            FileInputStream fileInputStream2 = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

标签:面试题,说一说,Java,检查,子类,代码,Exception,异常
From: https://www.cnblogs.com/JavaBuild/p/18002488

相关文章

  • Java 中的contains方法解析
    contains方法解析深入Collection集合的contains方法booleancontains(Objecto)如果此集合包含指定的元素,则返回truecontains方法是用来判断集合中是否包含某个元素的。它在底层调用了equals方法进行比对。publicclassCollectionTest04{publicstaticvoidmain......
  • java面向对象基础语法之两个引用指向同一个对象内存
    一:概述前面已经说了单个对象的引用指向和两个对象的引用指向。下面来说一下两个对象引用指向同一个对象的内存图。二:具体说明<1>说明的具体代码实例代码publicclassStudent1{Stringname;intage;publicvoidstudy(){System.......
  • 深入理解 Java 变量类型、声明及应用
    Java变量变量是用于存储数据值的容器。在Java中,有不同类型的变量,例如:String-存储文本,例如"你好"。字符串值用双引号引起来。int-存储整数(全数字),没有小数,例如123或-123。float-存储浮点数,带有小数,例如19.99或-19.99。char-存储单个字符,例如'a'或'B'。字......
  • 深入理解 Java 变量类型、声明及应用
    Java变量变量是用于存储数据值的容器。在Java中,有不同类型的变量,例如:String-存储文本,例如"你好"。字符串值用双引号引起来。int-存储整数(全数字),没有小数,例如123或-123。float-存储浮点数,带有小数,例如19.99或-19.99。char-存储单个字符,例如'a'或'B'。字......
  • 【技巧总结】java整数,字符串,数组之间的相互转换(持续更新)
    字符串转换为int类型给定一个字符串Stringstr="1234";转为转数字1234valueOf()Integernum=Integer.valueOf(str);返回的是包装类对象,可以进行调用对象方法可以用toString()方法。​parseIntintnum=Integer.parseInt(str)返回的是基本数据类型字符串......
  • 面试官:说一说你的第一个Java程序是怎么跑起来的?
    面试官:“说一说你第一个Java程序是怎么跑起来的?”我:“啊,您是说HelloWorld吗?”面试官:“嗯,没错,几十年过去了,还是helloworld......”我:“好滴!且听俺给您唠一唠”话不多说,直接上一段代码:/***class关键字:用于在Java中声明一个类*/publicclassStaffApplicationTests{......
  • Java 中 Collection接口中常用的方法
    Collection接口中常用的方法关于java.util.Collection接口中常用的方法Collection中能放什么元素没有使用“泛型”之前,Collectiom中可以存放Object的所有子类型使用了“泛型”之后,Collection中只能存放某个具体的类型。(集合中不能存储基本数据类型,也不能存储Java对象,只能......
  • 深入剖析Java中的反射,由浅入深,层层剥离!
    写在开头之前更新了不少Java的基础知识,比如Java的类、对象、基础类型、关键字、序列化、泛型、值传递等等,今天要上点深度了,来聊一聊Java中的反射!所谓反射,就是在运行时分析、检查和操作类、接口、方法、属性的行为!简单感受一下反射在开始详解反射之前,我们先通过一段代码,简......
  • Java之网络编程的详细解析
    1.网络编程入门1.1网络编程概述计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程在网络通信协议下,不同计算机上运行的程序,可以进行......
  • Java-06函数
    tip:[start]理解函数,最重要的是理解代码的执行顺序。——闫学灿tip:[end]函数基础一个典型的函数定义包括以下部分:修饰符、返回类型、函数名字、由0个或多个形参组成的形参列表以及函数体。编写函数我们来编写一个求阶乘的程序。程序如下所示:publicclassMain{ //函......