Java基础知识(六) 异常处理

上一篇:Java基础知识(五) 字符串与数组

异常处理

1. finally块中的代码什么时候被执行

在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定会被执行。由于程序执行return就意味着结束对当前函数的调用并跳出这个函数体,因此任何语句要执行都只能在return前执行(除非碰到exit函数),因此finally块里的代码也是在return前执行的。

示例代码:

/**
 * 创建时间 2021/8/3 9:55
 * finally代码块什么时候执行
 * @author Ye
 * @version 1.0
 */
public class Test13 {
    public static void main(String[] args) {
        System.out.println(test());
    }

    public static String test(){
        try{
            Object o = null;
            o.equals(" ");
            return "我在try里面返回的";
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            System.out.println("执行了finally");
            return "我在finally里面返回的";
        }
    }
}

运行截图:
在这里插入图片描述
说明,finally里面的return先执行,然后直接就返回了;发生了空指针异常,但是finally还是执行了。

但是finally里面的代码在一些情况也不会被执行

  1. 当程序在进入try语句块之前就出现异常时,会直接结束,不会执行finally块中的代码
  2. 当程序在try块中强制退出(System.exit(0))是也不会去执行finally块中的代码块

2. 异常处理的原理是什么

异常是指程序运行时(非编译时)所发生的非正常情况或错误,当程序违反了语义规则时,JVM 就会将出现的错误表示为一个异常并抛出。这个异常可以在 catch 程序块中进行捕获,然后进行处理。而异常处理的目的则是为了提高程序的安全性与鲁棒性。

Java 语言把异常当作对象来处理,并定义了一个基类(java.lang.Throwable)作为所有异常的父类。在 Java API 中,已经定义了许多异常类,这些异常类分为 Error(错误)和 Exception(异常)两大类。

违反语义规则包括两种情况:一种是 Java 类库内置的语义检查,例如当数组下标越界时,会引发 IndexOutOfBoundsException,当访问 null 的对象时,会引发 NullPointerException;另一种情况是 Java 允许开发人员扩展这种语义检查,开发人员可以创建自己的异常类(所有异常都是 Java. lang.Thowable 的子类),并自由选择在何时用 throw 关键字抛出异常。

3. 运行时异常和普通异常有什么区别

Java 提供了两种错误的异常类,分别为 Error 和 Exception,且它们拥有共同的父类——Throwable。
Error 表示程序在运行期间出现了非常严重的错误,并且该错误是不可恢复的,由于这属于JVM 层次的严重错误,因此这种错误是会导致程序终止执行的。此外,编译器不会检查 Error是否被处理,因此在程序中不推荐去捕获 Error类型的异常,主要原因是运行时异常多是由于逻辑错误导致的,属于应该解决的错误,也就是说,一个正确的程序中是不应该存在 Error的。OutOfMemoryError、ThreadDeath 等都属于错误。当这些异常发生时,JVM 一般会选择将线程终止。
Exception 表示可恢复的异常,是编译器可以捕捉到的。它包含两种类型:检查异常(checked exception)和运行时异常(runtime exception)。

参考:《Java程序员面试笔试宝典》 何昊、薛鹏、叶向阳 编著

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java异常处理Java程序设计的重要组成部分,也是程序设计过程中不可缺少的一部分。异常是在运行期间发生的错误,通常情况下不能交给编译器进行处理,需要程序员在代码中进行异常处理Java异常分为两个类型:checked exceptions(被检查异常)和unchecked exceptions(运行异常)。被检查异常是指程序在编译由编译器进行检查,必须在代码中进行处理,否则编译不通过。运行异常是指在程序运行发生的异常,可以被catch块捕捉并处理Java异常处理使用try、catch、finally、throw和throws关键字。try语句块定义了要捕捉的代码块,当该块中的某个语句抛出异常Java运行系统跳到catch语句块进行处理。finally语句块位于catch语句块之后,不管是否捕捉到了异常,该代码块中的代码执行。throw关键字用于在代码中抛出一个异常对象,而throws关键字用于声明方法可能抛出的异常类型。 在Java程序设计中,正确的异常处理可以有效地提高程序的健壮性和稳定性。通过合理使用try-catch语句块可以使程序能够优雅地处理异常,并向用户提供友好的错误提示。在编写代码,我们应该刻牢记异常处理程序设计中的重要部分,始终将其作为程序设计的一个必须要考虑的因素。只有通过良好的异常处理机制,我们才能编写出高质量高可靠的程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值