异常的处理,Arrays类的使用

本文深入解析Java中的异常处理机制,包括异常的定义、类型、发生原因及处理方式。涵盖编译时异常、运行时异常与错误的区别,以及如何通过try-catch、throws关键字和finally块进行异常管理。同时,介绍了自定义异常的步骤和Arrays工具类的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常

异常定义

  1. 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

  2. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误
    java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出
    java.lang.ArithmeticException 的异常。

  3. 发生异常的原因

    a. 用户输入了非法数据

    b. 要打开的文件不存在

    c. 网络通信是连接中断,或者JVM内存溢出

编译时异常

  1. 最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

运行时异常

  1. 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

错误

  1. 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

异常处理

Exception类

  1. 所有的异常类是从 java.lang.Exception 类继承的子类。

  2. Exception 类是 Throwable
    类的子类。除了Exception类外,Throwable还有一个子类Error 。

  3. Java
    程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。

  4. Error 用来指示运行时环境发生的错误。

  5. 例如,JVM 内存溢出。一般地,程序不会从错误中恢复。

  6. 异常类有两个主要的子类:CheckException 类和 RuntimeException 类。

    a. CheckException:检查时异常|编译时异常:一旦出现编译时异常,必须要手动进行处理,否则程序无法运行

    b. 运行期间才会出现的异常
    所有的运行期异常都会直接或者间接的继承自RuntimeException

    c. 处理:增强程序的健壮性 (if判断)

在这里插入图片描述

Java内置异常类

  1. 1.NullPointerException 空指针

  2. 2.ArrayIndexOutOfBoundsException 数组越界异常

  3. 3.ArithmeticException 数学异常

  4. 4.ClassCastException 类型转换异常

  5. 5.NegativeArraySizeException 负数异常

  6. 6.NumberFormatException 数字格式异常

异常方法

  1. public String getMessage()
    返回关于发生的异常的详细信息。这个消息在Throwable
    类的构造函数中初始化了。

  2. public Throwable getCause()
    返回一个Throwable 对象代表异常原因。

  3. public String toString()

使用getMessage()的结果返回类的串级名字。

  1. public void printStackTrace()
    打印toString()结果和栈层次到System.err,即错误输出流。

  2. public StackTraceElement [] getStackTrace()
    返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。

  3. public Throwable fillInStackTrace()
    用当前的调用栈层次填充Throwable
    对象栈层次,添加到栈层次任何先前信息中。

捕获异常

在这里插入图片描述

  1. try中一旦遇到异常代码了,后面的代码将不在执行,直接去执行对象的catch中的内容

  2. catch可以有一个也可以有多个,最好给不同的异常不同的catch,最终可以给Exception最大范围接受异常

  3. 如果出现多个catch,应该
    把最大范围的写在最后,否则范围小的将永远执行不了

  4. 如果是编译时异常必须使用异常处理的两种方式之一处理,如果是运行时异常可以增强健壮性也可以异常处理

Throws/throw关键字

  1. 如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws
    关键字来声明。throws 关键字放在方法签名的尾部。

  2. 也可以使用 throw
    关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

Finally关键字

  1. finally 关键字用来创建在 try 代码块后面执行的代码块。

  2. 无论是否发生异常,finally 代码块中的代码总会被执行。

  3. 在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

  4. finally 代码块出现在 catch 代码块最后,语法如下:

  5. 在这里插入图片描述

自定义异常

  1. 当代码执行到某一个阶段时,逻辑上想要抛出一个异常,可以进行选择异常(jdk提供的,可以自定义)

    a. 需要直接或者间接的继承自Exception

    b. 自定义类体实现

  2. 所有异常都必须是 Throwable 的子类。

    a. 如果希望写一个检查性异常类,则需要继承 Exception 类。

    b. 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

在这里插入图片描述

Arrays工具类

binarySearch

在这里插入图片描述

copyOf

在这里插入图片描述

deepToString

在这里插入图片描述

equals

在这里插入图片描述

copyOfRange

在这里插入图片描述

sort

在这里插入图片描述

fill

在这里插入图片描述

arraycopy

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值