Java认识异常

这篇博客详细介绍了Java中的异常处理,包括异常的概念、体系结构、分类,以及如何进行防御式编程,如LBYL和EAFP策略。同时,文章讨论了异常的抛出和捕获,如try-catch-finally的使用,以及异常的声明(throws)。此外,还讲解了异常的处理流程和自定义异常类的方法。
摘要由CSDN通过智能技术生成

一、异常

概念

Java中,将程序执行过程中发生的不正常行为称为异常
Java中不同类型的异常,都有与其对应的类来进行描述
比如:
算术异常

System.out.println(10/0);

运行结果

Exception in thread "main" java.lang.ArithmeticException: / by zero

数组越界异常

 int[] arr = {
   1,2,3};
 System.out.println(arr[3]);

运行结果

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

空指针异常

int[] arr = null;
        System.out.println(arr.length);

运行结果

Exception in thread "main" java.lang.NullPointerException

体系结构

异常Throwable:是异常体系的顶层类,派生出ErrorException两个子类
Error:指Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,例如,StackOverflowErrorOutOfMemoryError,一旦出现,无法挽回
Exception:异常产生后程序员可以通过代码处理,使程序继续执行

分类

根据异常发生的时机不同,分为编译时异常和运行时异常

编译时异常

在程序编译期间发生的异常,称为编译时异常,也称为受检查异常(Check Exception)

public class Test {
   
    private String name;
    private String gender;

    @Override
    public Test clone(){
   
        return (Test)super.clone();  // 编译报错 
        // java: 未报告的异常错误java.lang.CloneNotSupportedException; 必须对其进行捕获或声明以便抛出
    }
}
 @Override
    public Test clone() throws CloneNotSupportedException {
   
        return (Test)super.clone();
    }
运行时异常

在程序运行期间发生异常,称为运行时异常,也称为非受检查异常(Unchecked Exception)
RunTimeException以及其子类对应的异常,都称为运行时异常。比如NullPointerExceptionArrayIndexOutOfBoundsExceptionArithmeticException
编译时出现的语法性错误,不能称为异常,比如单词拼写错误

二、异常的处理方式

防御式编程

LBYL

Look Before You Leap
在操作之前做充分的检查,事前防御型

boolean ret = false;
ret = 登陆游戏();
if (!ret) {
   
 处理登陆游戏错误;
 return;
}
ret = 开始匹配();
if (!ret) {
   
 处理匹配错误;
 return;
}
ret = 游戏确认();
if (!ret) {
   
 处理游戏确认错误;
 return;
}
ret = 选择英雄
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值