异常----RuntimeException与其他的一些区别以及throw与throws的区别

本文深入探讨Java中的异常处理机制,包括编译时检测异常与运行时异常的区别,并通过实例展示了如何自定义异常类及如何正确地抛出和捕获异常。

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

/*
 异常的分类:
 1,编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系。
    这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。

    这样的问题都可以针对性的处理。

 2,编译时不检测异常(运行时异常)
    这种问题的发生,无法让功能继续,运算无法进行,更多是因为调用的原因导致的或者引发了内部状态的改变导致的
    那么这种问题一般不处理,直接编译通过,在运行时,强制停止,让调用者对代码进行修正。

 所以,自定义异常时,要么继承Exception。要么继承RuntimeException。

 throw和throws的区别
 1,throws使用在函数上。
    throw使用在函数内。
 2,throws抛出的是异常类,可以抛出多个,用逗号隔开。
    throw抛出的是异常对象。
 */
class FuShuIndexException extends RuntimeException //Exception
{
    FuShuIndexException()
    {}
    FuShuIndexException(String msg)
    {
        super(msg);
    }
}

class Demo
{
    public void method(int[] arr,int index) //throws FuShuIndexException//进行声明
    {
        if(arr == null)
        {
            throw new NullPointerException("数组的引用不能为空!");
        }
        if(index >= arr.length)
        {
            throw new ArrayIndexOutOfBoundsException("数组的角标越界了,兄弟。"+index);
        }
        if(index < 0)
        {
            throw new FuShuIndexException("角标变成负数啦");
            //报错 未报告的异常,必须对其进行捕捉或声明以便抛出。
        }

        System.out.println(arr[index]); 
    }

}
public class ExceptionDemo2 {

    public static void main(String[] args) {//hrows FuShuIndexException{//进行声明
        int[] arr = new int [3];
        new Demo().method(arr,-3);  
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值