Java中处理异常的方法详解

Throwable是Java语言中所有错误或异常的超类。子类有Error和Exception两个:
        Error类是指Java运行时系统的内部错误和资源耗尽错误。例如,JVM 内存溢出,线程死锁。一般地,程序不会从错误中恢复。如果出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。
        Exception类

一个是运行时异常RuntimeException,如:NullPointerException、ClassCastException;RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。派生RuntimeException的异常一般包含几个方面:错误的类型转换、数组访问越界、访问空指针
一个是检查异常CheckedException,如I/O错误导致的IOException、SQLException;这种异常都发生在编译阶段,Java编译器会强制程序去捕获此类异常。

下面介绍我们在Java中常见的异常有这么几个:

1、NullPointerException(空指针异常)
NullPointerException是Java中最常见的运行时异常之一。它通常发生在试图使用空对象时,例如,调用一个空对象的方法或属性。要避免空指针异常,可以在使用对象之前进行null检查。

2、ClassNotFoundException(类未找到异常)
ClassNotFoundException通常发生在Java虚拟机无法找到需要的类时。这可能是由于编译时错误、类路径问题或代码中拼写错误引起的。可以使用try-catch语句捕获ClassNotFoundException,并在控制台输出异常信息以便调试。

3、IOException(输入输出异常)
IOException是Java中最常见的编译时异常之一。它通常发生在输入输出操作中,例如读取文件时发生了错误。为了避免IOException,可以使用try-catch语句来捕获异常,并在程序中处理它。

4、ArrayIndexOutOfBoundsException(数组越界异常)
ArrayIndexOutOfBoundsException通常发生在试图访问数组的无效索引时。要避免这种异常,可以在访问数组之前检查数组的长度,以确保访问的索引不超过数组的长度。

5、ArithmeticException(算术异常)
ArithmeticException通常发生在试图进行除以零或模零操作时。要避免算术异常,可以在执行这些操作之前检查被除数是否为零。

二、异常的处理流程

1.当程序执行到可能会抛出异常的代码时,会尝试执行这段代码。

2.如果这段代码抛出了异常,那么程序会将异常对象封装成一个Exception对象,并将其交给Java虚拟机处理。

3.Java虚拟机会在当前方法中查找一个能够处理这种类型异常的catch语句块。

4.如果找到了合适的catch语句块,那么程序会执行这个catch语句块中的代码,并跳过try语句块中剩余的代码和其他catch语句块。

5.如果没有找到合适的catch语句块,那么程序会退出当前方法,并继续在调用栈中查找能够处理这种类型异常的catch语句块。

6.如果在调用栈中也没有找到合适的catch语句块,那么程序会崩溃,并输出异常信息。

三、异常处理最佳实践
在Java中,异常处理是一项非常重要的技能,良好的异常处理能够使程序更加健壮和可靠。

1.不要捕获所有异常。应该尽可能地具体地捕获异常,并处理它们。

2.不要在catch语句块中使用System.out.println()等输出语句。应该使用日志记录工具,例如Log4j、Slf4j等等。

3.不要在finally语句块中使用return语句。如果在finally语句块中使用return语句,那么可能会覆盖try语句块中的return语句,导致程序出现意外行为。

4.不要忽略异常。即使是无法处理的异常,也应该在日志中记录下来,以便于后续的调试和分析。

5.不要在循环中捕获异常。应该尽可能地将try-catch语句块放在循环外面。

Java中的异常概述

在Java中,异常是指程序发生了不正常的情况,如数组越界、除数为零、文件未找到等等。但是这些异常并不会像C语言一样直接导致程序崩溃,而是抛出一个异常对象。这个对象可以有程序员自行定义,也可以是Java中已有的异常类,比如NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组下标越界异常)等等。一般地,通过try-catch-finally语句块来处理异常。

Java中捕获异常的方式主要有两种,分别为try-catch语句块和throws关键字。这两种方式都可以有效地处理异常;

  1. try-catch语句块 try-catch语句块是Java中用来捕获异常的方式之一,主要是用来处理小范围的异常;在try语句块中包含了可能会抛出异常的代码,而catch语句块则用来捕获并处理抛出的异常。如果try语句块中的代码没有抛出异常,则catch语句块将不会执行。而finally语句块是用来执行无论如何都需要执行的代码,比如资源的关闭操作等。
  2. throws关键字   throws关键字是Java中处理异常的一种方法,主要用于处理大范围的异常。在方法声明中用throws语句可以声明抛出异常的列表, throws后面的异常类型可以是方法中产生的异常类型, 也可以是它的父类。一旦方法体执行时,出现异常,仍会在异常代码处,生成一个异常类的对象,此对象满足throws后异常类型就会被抛出,并且异常代码后续的代码不再执行。

另外:throw 关键字
手动抛出异常,java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出, 也可根据需要使用人工创建并抛出。
首先要生成异常类对象, 然后通过throw语句实现抛出操作。throw的方式只是将异常抛给了方法的调用者,并没有真正将异常处理掉,而将异常交给方法的调用者的地方处理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值