异常的解析

这篇博客详细介绍了Java中的异常处理机制,包括异常的概念、体系、分类和处理方式。异常分为编译时异常和运行时异常,需要遵循特定的处理规则。在代码示例中,展示了catch语句的使用顺序和throw关键字的异常抛出。同时强调了子类异常处理需遵循的规则,以及方法重写时异常处理的注意事项。

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

异常的概念:

        通俗来讲,就是代码编译时和运行时出现的问题。(那么官方的话我布吉丢!)

异常的体系:

        error:通俗来讲,就是比较严重的错误,是错误!所以不能被捕获和抛出。

        Ioexception:就是,异常讲的主体。就是代码编译和运行时出现的问题。

        Error 类体系描述了 Java 运行系统中的内部错误以及资源耗尽的情形,Error 不需要捕捉。
        RuntimeException 一般是外部错误(非 Error),其一般被 try{}catch 语句块所捕获

异常的分类:

        编译时异常:代码编译时期就会检查;没有处理异常就会编译失败。如:checked异常。

        运行时异常:代码运行时期就会检查:运行异常不会报错。如:runtime异常。

异常的继承结构:

        基类为:Throwable;Error 和 Excepution继承Throwable;RuntimeExcepution和IOExcepution继承EXception。

异常的处理:

        try{}catch{}finally:try:运行可能出现异常的代码;    catch:捕获可能出现的异常;       finnally:最后一定要执行的部分。 

        throws:抛出异常。

     

使用的规则:

        try:try{}里面放运行可能出现异常的代码;

        catch:1、父子类:

              ①子类声明的异常不能超过父类声明的异常的范围。              

              ④catch可以有多个!当catch多个时,子类异常在前,父类异常在后。当父类异常在前时,后面的子类异常就不会执行。   

              ⑤catch多个时,两个catch可以和无关系。         

        finnally: 不管前面怎么样finnally的代码一定要执行。

                         遇到return时,先执行finnally,然后执行return!

        throws:谁调用,抛给谁。

              ①如果父类抛出多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常

              ②父类方法没有抛出异常,子类重写父类该方法时也不可以抛出异常,此时子类产生该异常,只能捕获处理不能声明抛出

看代码题:

① catch的使用

public static void main(String[] args){
    try{
            String[]s=null;
            s[0]="text";
            System.out.println(s[0]);
        }catch(Exceptoon e){
            System.out.println("Excepution");
        }catch(NullponintException npe){
            System.out.println("NullPointException");
        }
}
//运行结果:编译失败

分析一下:

           这个代码有多个“catch”,需要秉承,子类异常在前 ,父类异常在后的规则;Excepution是NullPointException的父类,应该在后。

②throw的使用

public class A{
    void proess() throws Exception{
        throw new Excepution();
    }
    public static void main(String []args){
        new B().process();
    }
}
class B extends A{
     void process(){
        System.out.println("B");
    }
}
//运行结果:B

分析一下:子类中重写的方法,子类声明的异常要少于父类的方法异常。

        这道题目中,B重写A中的process方法,没有抛出异常,A的process抛出了异常,所以正常输出B。

public class SmoeExcepution{ }
public class A{
    public void doSomething(){ }
}
public class B extends A{
    public void dosomething() throws SomeExcepution
}
//A编译成功,B编译失败

分析一下:这道题目中,B重写A中的dosomething方法,抛出异常,A的没有抛出;A编译成功,B编译失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值