关于异常——基础篇

这篇博客介绍了Java异常处理的基础知识,包括异常体系、异常对象的构造方法和常见方法、异常的抛出以及异常的捕获。异常体系分为Error和Exception两大类,其中Error表示Java虚拟机无法解决的严重问题。Exception则可以通过代码进行处理。异常对象常用方法有getMessage()和printStackTrace()。异常的抛出使用throw关键字,并遵循特定规则。异常捕获包括使用throws声明抛出异常和try-catch语句块进行处理,finally块用于确保资源清理。

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

目录

异常体系

异常对象的构造方法和常见方法

异常的抛出

异常的捕获

    1. 异常声明throws

    2. try-catch捕获并处理

     3. finally


异常体系

                                    

          (1)Throwable:是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception

          (2)Error:指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽 

                              等,典型代表:StackOverflowError和OutOfMemoryError

          (3)Exception:异常产生后程序员可以通过代码进行处理,使程序继续执行。

           继承自 Error 的是错误

           继承自 RuntimeException 的是非受查异常

           继承自 Exception,但不是RuntimeException 子类的是受查异常

           Java针对受查异常要求:

                                                 一个方法如果抛出了受查异常,必须通过 throws 声明异常

                                                 方法如果抛出的是非受查异常,则可以声明也可以不声明

异常对象的构造方法和常见方法

例:

         

常见方法:

             (1)获取消息内容:getMessage()

             (2)将当前异常地调用栈信息打印到控制台上:printStackTrace()                                                                                                                 printStackTrace(System.err)   // 打印到标准错误上

                                                                           printStackTrace(System.out)  // 打印到一般错误上

异常的抛出

           在Java中,可以借助throw关键字,抛出一个指定的异常对象,将错误信息告知给调用者

                            

           注:

             (1)throw必须写在方法体内部

             (2)抛出的对象必须是Exception 或者 Exception 的子类对象

             (3)如果抛出的是 RunTimeException 或者 RunTimeException 的子类,则可以不用处

                      理,直接交给 JVM来处理

             (4)如果抛出的是编译时异常,用户必须处理,否则无法通过编译

             (5)异常一旦抛出,其后的代码就不会执行

异常的捕获

    1. 异常声明throws

          处在方法声明时参数列表之后,当方法中抛出编译时异常,用户不想处理该异常,此时就可 

          以借助 throws将异常抛给方法的调用者来处理。即当前方法不处理异常,提醒方法的调用者

          处理异常。

                          

           注:

              (1)throws必须跟在方法的参数列表之后

              (2)声明的异常必须是 Exception 或者 Exception 的子类

              (3)方法内部如果抛出了多个异常,throws之后必须跟多个异常类型,之间用逗号隔

                       开,如果抛出多个异常类型具有父子关系,直接声明父类即可。

              4)调用声明抛出异常的方法时,调用者必须对该异常进行处理,或者继续使用throws

                       抛出

    2. try-catch捕获并处理

               

           注:

               (1)[]中表示可选项,可以添加,也可以不用添加

               (2)try中的代码可能会抛出异常,也可能不会

               3try块内抛出异常位置之后的代码将不会被执行

               4)如果抛出异常类型与catch时异常类型不匹配,即异常不会被成功捕获,也就不会被

                        处理,继续往外抛,直到JVM收到后中断程序----异常是按照类型来捕获的

               5try中可能会抛出多个不同的异常对象,则必须用多个catch来捕获----即多种异常,

                        多次捕获

               6)可以通过一个catch捕获所有的异常,即多个异常,一次捕获(不推荐)

     3. finally

               

           注:

                  finally中的代码一定会执行的,一般在finally中进行一些资源清理的扫尾工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值