JavaSE学习值之--认识异常(上)

简介: JavaSE学习值之--认识异常

💕"有效知识的前提是承认知识边界,承认我们对边界那边的一切无可奉告。"💕

作者:Mylvzi

文章主要内容:JavaSE学习值之--认识异常

一.什么是异常?

异常就是程序在运行的时候产生的不正常的行为  小细节没注意到,发生了小的错误,比如:

1.算数异常

System.out.println(10/0);

2.空指针异常  null.length

int[] arr = null;
        System.out.println(arr.length);

3.数组越界异常

int[] arr = new int[3];
        System.out.println(arr[5]);

 

 可见Java中java中不同类型的异常,都有与其对应的类来进行描述,实际上Java中的异常是一个大的体系

二.异常的体系:

异常它是由编译器识别并给出的,证明其存在于编译器所自带的库文件中,应该是一个类

1. Throwable:

 是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception

2. Error:

 指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型代表: StackOverflowError和OutOfMemoryError,一旦发生回力乏术。(递归调用时)

3. Exception:

 异常产生后程序员可以通过代码进行处理,使程序继续执行。比如:感冒、发烧。我们平时所说 的异常就是Exception。

三.异常的分类:

 主要是分为两大类

  • 运行时异常(不受查异常)

RuntimeException()

  • 编译时异常(受查异常)

1. RunTimeException 包括他的所有子类

在程序执行期间发生的异常,称为运行时异常,也称为非受检查异常(Unchecked Exception)

注意:

 在编写代码过程中出现的语法错误不是运行时异常,比如把main写成了mian,编译器在编译的时候就会报错,这叫错"编译期错误",而运行时异常的产生是所写代码已经经过编译生成.class文件了,再交由JVM运行时产生的错误

补充:RuntimeException的子类

2.编译时异常

 在编译的时候就会发生的异常,又称作受查异常(Checked Exception)

比如之前实现的Cloneable接口

class Stu implements Cloneable {
    String name;
    int age;
    public Stu(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
    @Override
    public String toString() {
        return "Stu{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Test1 {
    public static void main(String[] args){
        Stu stu = new Stu("lvzi",18);
        Stu stu2 =(Stu) stu.clone();
        System.out.println(stu2);
}

之前提到,必须在main方法的签名中声明抛出异常,否则会出现异常

这种在编译阶段就报错的异常叫做编译时异常,又叫做受查异常(Checked Exception)

JavaSE学习值之--认识异常(下)+https://developer.aliyun.com/article/1413513


目录
相关文章
|
6月前
|
Java
请解释Java中的异常处理机制,并给出使用try-catch块的示例。
请解释Java中的异常处理机制,并给出使用try-catch块的示例。
143 0
|
1月前
|
IDE Java 开发工具
Java“未封闭的 String 表达式”怎么解决
要解决Java中的“未封闭的 String 表示”问题,需检查并修正字符串字面量,确保每个字符串被正确地用双引号括起来。若字符串跨越多行,可使用字符串连接操作符(+)或引入文本块(JDK 13 及以上版本)。这能帮助避免语法错误,并使代码更整洁易读。
|
1月前
|
Java
Java“缺少返回语句”解决
在 Java 中,错误信息“缺少返回语句”表示方法应返回某种类型但未在所有路径中提供返回值,导致编译错误。解决方法包括:确保每个控制路径中有返回值;处理所有分支和异常情况;或将方法声明为 `void` 类型以避免返回值需求。
|
1月前
|
Java 编译器
Java“无效的方法声明;需求返回类型”怎解决
要解决Java中的“无效的方法声明;需要返回类型”错误,需为方法指定正确的返回类型。检查方法签名,添加如`void`、`int`、`String`等类型,并确保方法体内正确使用`return`语句。这能帮助Java编译器理解和验证方法的行为。遵守这些规则,可以避免语法错误并确保程序正常运行。
|
Java 编译器 API
【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题(下)
【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题(下)
【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题(下)
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
|
6月前
|
监控 Java
JAVASE---异常知识补充
Java异常处理涉及关键字try, catch, finally, throw, throws。示例中展示了如何处理`ArithmeticException`。在`Demo01`,尝试除以零并主动抛出异常,通过不同catch块捕获。`Demo02`中,方法`test`可能抛出异常,并通过`throws`声明。`Test`用try-catch处理除零错误,并将异常转换为`RuntimeException`。自定义异常可通过继承`Exception`类实现,流程包括创建异常类、抛出异常对象、捕获处理异常。
32 1
|
6月前
|
Java 程序员 编译器
JavaSE学习值之--认识异常(下)
JavaSE学习值之--认识异常(下)
51 0
java定义一个变量后调用该变量提示Unknown class
java定义一个变量后调用该变量提示Unknown class
|
Java
Java中如何循环输出对象、属性和值【亲测可用】、反射机制
Java中如何循环输出对象、属性和值【亲测可用】、反射机制
784 0