java异常

本文详细介绍了Java中的异常处理机制,包括try-catch-finally语句块的使用、异常类型的匹配规则以及如何自定义异常。强调了异常处理的原则,如避免庞大的try块和指定具体异常类型。同时,阐述了Error与Exception的区别,并提供了面试题解析。

一、什么是异常

        异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

二、关键词

        try:执行可能产生 异常的代码

        catch:捕获异常

        finally:无论是否发生异常, 代码总能执行

        throws:声明方法可能要 抛出的各种异常

        throw:手动抛出异常

try-catch:

使用try-catch块捕获异常,分为三种情况

        第一种情况 :try块中所有语句正常执行完毕,不会发生异常,那么catch块中的所有语句都将会被忽略。

        第二种情况 :try语句块在执行中遇到异常,那么在try块中其余剩下的代码都将被忽略,系统会自动生成相应的异常对象,如果这个异常对象与catch中声明的异常类型相匹配,则相应的catch块将会被执行。

        第三种情况 :try语句块在执行中遇到异常,如果这个异常对象与catch中声明的异常类型不匹配,程序会中断。

在catch块中处理异常

        加入用户自定义处理信息

        System.err.println();

三、常见的异常类型

引发多种类型的异常

        排列catch 语句的顺序:

                先子类后父类

                发生异常时按顺序逐个匹配

                只执行第一个与异常类型匹配的catch语句

 public void method(){

        try {

             // 代码段

             // 产生异常(异常类型2)

        } catch (异常类型1 ex) {

             // 对异常进行处理的代码段

        } catch (异常类型2 ex) {

             // 对异常进行处理的代码段

        } catch (异常类型3 ex) {

             // 对异常进行处理的代码段

        }

        // 代码段

}

面试题:

try-catch块中存在return语句,是否还执行finally块,如果执行,说出执行顺序?

finally先执行,然后再执行return。

try-catch- finally块中, finally块唯一不执行的情况是什么?

虚拟机被关闭。

四、声明异常

Java语言中通过关键字throws声明某个方法可能抛出的各种异常。

throws可以同时声明多个异常,多个异常用逗号隔开。

五、抛出异常 

 Java语言中通过关键字throw来自行抛出异常。

 面试题:

throw和throws的区别表现在以下三个方面

作用不同:

        throw用于在程序中抛出异常;

        throws用于声明在该方法内抛出了异常。

使用的位置不同:

        throw位于方法体内部,可以作为单独语句使用;

        throws必须跟在方法参数列表后面,不能单独使用。

内容不同:

        throw抛出一个异常对象,而且只能是一个;

        throws后面跟异常类,而且可以跟多个异常类。

异常的分类

Errory与Exception的区别:
答:都继承与Throwable这个类
Error是java程序在编译阶段出现的问题,代码将无法通过编译
Excpetion是java程序在运行阶段出现的问题,能通过编译,但是不能正常运行

六、自定义异常

         1.定义异常类        (继承Throwable类、继承Excepion 或者RuntimeException)

        2.编写构造方法,继承父类的实现

        3.实例化自定义异常对象

        4.使用throw抛出

异常处理原则

        异常处理与性能

        异常只能用于非正常情况

        不要将过于庞大的代码块放在try中

        在catch中指定具体的异常类型

        需要对捕获的异常做处理

总结

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值