Java入门5: 异常


Java入门5: 异常

MangoGO 芒狗狗


5 异常

  本节将主要讲解关于 Java 的异常处理的基础理论以及如何捕获异常。

  异常指不期而至的各种状况,它在程序运行的过程中发生。作为开发者,我们都希望自己写的代码永远都不会出现 bug,然而现实告诉我们并没有这样的情景。如果用户在程序的使用过程中因为一些原因造成他的数据丢失,这个用户就可能不会再使用该程序了。所以,对于程序的错误以及外部环境能够对用户造成的影响,我们应当及时报告并且以适当的方式来处理这个错误。

  之所以要处理异常,也是为了增强程序的鲁棒性。

  异常都是从 Throwable 类派生出来的,而 Throwable 类是直接从 Object 类继承而来。你可以在 Java SE 官方 API 文档中获取更多关于它们的知识。

5.1 异常的分类

  异常通常有四类:

  • Error:系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理。
  • Exception:可以处理的异常。
  • RuntimeException:可以捕获,也可以不捕获的异常。
  • 继承 Exception 的其他类:必须捕获,通常在 API 文档中会说明这些方法抛出哪些异常。

  平时主要关注的异常是 Exception 下的异常,而 Exception 异常下又主要分为两大类异常,一个是派生于 RuntimeExcption 的异常,一个是除了 RuntimeExcption 体系之外的其他异常。

  RuntimeExcption 异常(运行时异常)通常有以下几种:

  • 错误的类型转换
  • 数组访问越界
  • 访问 null 指针
  • 算术异常

  一般来说,RuntimeException 都是代码逻辑出现问题。

  非 RuntimeException(受检异常,Checked Exception)一般有:

  • 打开一个不存在的文件
  • 没有找到具有指定名称的类
  • 操作文件异常

  受检异常是编译器要求必须处理的异常,必须使用 try catch 处理,或者使用 throw 抛出,交给上层调用者处理。

5.2 声明及抛出

5.2.1 throw 抛出异常

  当程序运行时数据出现错误或者我们不希望发生的情况出现的话,可以通过抛出异常来处理。异常抛出语法:

throw new 异常类();
// ThrowTest,java
public class ThrowTest {
   

    public static void main(String[] args) {
   
        Integer a = 1;
        Integer b = null;
        //当a或者b为null时,抛出异常
        if (a == null || b == null) {
   
            throw new NullPointerException();
        } else {
   
            System.out.println(a + b);
        }
    }
}
!java ThrowTest.java
Exception in thread "main" java.lang.NullPointerException
	at ThrowTest.main(ThrowTest.java:8)

  上面代码中因为 b 为 null,所以抛出了异常。

5.2.2 throws 声明异常

  throws 用于声明异常,表示该方法可能会抛出的异常。如果声明的异常中包括 checked 异常(受检异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MangoGO芒狗狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值