异常的处理,Arrays类的使用

异常

异常定义

  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判断)

异常的处理,Arrays类的使用

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
    对象栈层次,添加到栈层次任何先前信息中。

捕获异常

异常的处理,Arrays类的使用

  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. 异常的处理,Arrays类的使用

自定义异常

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

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

    b. 自定义类体实现

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

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

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

异常的处理,Arrays类的使用

Arrays工具类

binarySearch

异常的处理,Arrays类的使用

copyOf

异常的处理,Arrays类的使用

deepToString

异常的处理,Arrays类的使用

equals

异常的处理,Arrays类的使用

copyOfRange

异常的处理,Arrays类的使用

sort

异常的处理,Arrays类的使用

fill

异常的处理,Arrays类的使用

arraycopy

异常的处理,Arrays类的使用