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


目录
相关文章
|
18天前
|
Java
请解释Java中的异常处理机制,并给出使用try-catch块的示例。
请解释Java中的异常处理机制,并给出使用try-catch块的示例。
|
7月前
|
存储 Java C++
【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别
C++与JAVA之间存在着一些区别,我们需要重视区别才能更好地灵活学习和运用不同的编程语言。 总之,C++中可以利用==来判断两个字符串的值是否相等;而JAVA中必须使用String类的成员函数equals()(区分大小写)和equalsIgnoreCase()(不区分大小写)来判断两个字符串的值是否相等。
49 0
|
7月前
|
Java
java判断Object对象是否为空demo
java判断Object对象是否为空demo
|
18天前
|
监控 Java
JAVASE---异常知识补充
Java异常处理涉及关键字try, catch, finally, throw, throws。示例中展示了如何处理`ArithmeticException`。在`Demo01`,尝试除以零并主动抛出异常,通过不同catch块捕获。`Demo02`中,方法`test`可能抛出异常,并通过`throws`声明。`Test`用try-catch处理除零错误,并将异常转换为`RuntimeException`。自定义异常可通过继承`Exception`类实现,流程包括创建异常类、抛出异常对象、捕获处理异常。
14 1
|
18天前
|
Java
JAVA——List中剔除空元素(null)的三种方法汇总
JAVA——List中剔除空元素(null)的三种方法汇总
|
18天前
|
Java 程序员 编译器
JavaSE学习值之--认识异常(下)
JavaSE学习值之--认识异常(下)
33 0
|
18天前
|
SQL JSON Java
Java【问题记录 02】对象封装+固定排序+list All elements are null引起的异常处理+Missing artifact com.sun:tools:jar:1.8.0
Java【问题记录 02】对象封装+固定排序+list All elements are null引起的异常处理+Missing artifact com.sun:tools:jar:1.8.0
46 0
|
11月前
|
Java
Java 字符串的操作集合(记录日常学习的demo)(一)
Java 字符串的操作集合(记录日常学习的demo)(一)
50 0
|
18天前
|
Java
437. 路径总和 III --力扣 --JAVA
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
27 0
|
6月前
|
Java
1657. 确定两个字符串是否接近 --力扣 --JAVA
如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : 操作 1:交换任意两个 现有 字符。 例如,abcde -> aecdb 操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。 例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a ) 你可以根据需要对任意一个字符串多次使用这两种操作。 给你两个字符串,word1 和 word2 。如果 word1 和 word2 接近 ,就返回 true ;否则,返回 false 。
31 0

热门文章

最新文章