finally叫做最后的执行快,什么是最后的执行快?他的意思是这样的 他是写在try catch 的后面但是只能写一个,他设计这个finally的意思就是,如果try里面出错肯定会往陷阱里面跑。没有出错就会执行完毕然后直接往下走。那么如果有一个资源在try里面使用,但是一但出错了呢?这个资源肯定要关闭的,如果在正常的代码里面写关闭,如果出错了就不能关闭,所以要在catch里面关闭资源,但是catch陷阱有很多个不知道他的错误要进哪一个陷阱,那么我们不可能每个陷阱里面都的加关闭的资源这样代码的重复就太多了,所以Java就出现了一个finally类,finally类不管你的代码有没有错误他最终都还得执行。如图9.2所示:
图9.2
习例题9.21所示:
图9.21
他的执行过程是这样的,首先1/0肯定有错误不能被零整除那么就进入陷阱发现Error这个陷阱不是他的类型 那么就不进去走到finally打印了333333然后抛出上一级发现那个陷阱是属于他的那么就进入陷阱池打印了444444然后遇到了finally打印了5555555往下执行又遇到了finally那么又打印了finally里面的代码6666666。
throw在Java里面就是把异常再次抛出去,他在方法上可以写,嵌套里面也可以写。只要throw这个关键字写上了那么他后面就不允许在有任何的代码
技术分享:www.kaige123.com
相关推荐
如果系统提供的异常类无法满足需求,开发者可以创建自己的异常类,继承自系统提供的异常类(如Java中的`Exception`类),添加额外的信息或功能。 8. **异常的最佳实践** - 应尽量避免在`catch`块中只简单地忽略...
6. **静态块与实例初始化块**:`finally` 块与类的静态初始化块和实例初始化块不同,它是在对象创建后,方法调用过程中执行的。 7. **效率考虑**:虽然 `finally` 是确保代码执行的重要工具,但过度使用或设计不当...
在Java编程语言中,"final", "finally", 和 "finalize" 这三个关键字有着截然不同的含义和用途,它们各自在程序设计的不同层面扮演着重要角色。深入理解这些概念对于编写高效、健壮的Java代码至关重要。 ### final ...
在Java编程语言中,`final`, `finally`, 和 `finalize` 是三个非常重要的关键字,它们各自扮演着不同的角色,尤其在处理程序的可预测性、数据的不可变性和垃圾回收等方面。下面将详细阐述这三个关键字的区别及其应用...
每个`catch`块都对应一个特定的异常类或者异常类的父类,这样就可以捕获不同类型的异常。当`try`块中的代码抛出一个异常时,Java会寻找匹配的`catch`块来处理这个异常。如果找到,那么就执行`catch`块中的代码;如果...
Static Nested Class意味着创建一个static内部类的对象,不需要一个外部类对象,不能从一个static内部类的一个对象访问一个外部类对象。 在Java面试中,还需要了解&和&&的区别。&是位运算符,&&是布尔逻辑运算符。 ...
final修饰的类表示该类不能被继承,这样可以防止其他类随意扩展,增强了类的封装性和安全性。例如,Java核心类库中的`java.lang.String`就是final类,不允许其他类继承它。 final修饰的方法不能被子类重写...
内部类和外嵌类之间存在着紧密的关系:内部类可以访问外嵌类的成员变量和方法,而外嵌类也可以使用内部类声明的对象作为其成员。内部类的类体中不能声明静态成员变量和静态方法。 匿名类是一种特殊的内部类,它可以...
【Java核心技术】final、finally和finalize是Java编程中三个重要的关键字,它们各自有着独特的功能和用法。 **final关键字** final在Java中扮演着“不可改变”的角色。它可以用来修饰类、方法和变量: 1. **修饰类...
Java编程中的`final`, `finalize`, 和`finally`是三个重要的关键字,它们各自在不同的场景下发挥着关键作用。理解这三个关键字的区别对于Java开发者来说至关重要,尤其是在面试中常常会被问及。 首先,`final`是一...
Java编程中的`final`、`finally`和`finalize`关键字对于理解Java程序的运行机制至关重要。它们各自有独特的用途和特点。 首先,`final`关键字是Java中的一个多面手,它可以用于修饰类、方法和变量。当`final`用于...
`catch`块接收一个参数,该参数是异常类的实例,通常是`Exception`或其子类。 ```java catch (ExceptionType1 e1) { // 处理 ExceptionType1 异常的代码 } catch (ExceptionType2 e2) { // 处理 ExceptionType2 ...
Java 基础之 final、finally 和 finalize 的区别 Final、finally 和 finalize 是 Java 语言中三个常用的关键字,然而它们的作用和用法却有很大的区别。下面我们将详细介绍这三个关键字的区别。 Final Final 是一...
2. **异常处理**:使用try-catch-finally语句块确保事务的正常结束,无论是否抛出异常,都要确保在finally块中关闭资源并处理事务状态。 3. **事务传播行为**:在使用Spring等框架时,可以通过@Transactional注解...
【抽象类】 抽象类是Java编程中一种特殊类型的类,它被`abstract`关键字修饰。抽象类的主要特点是它不包含完整的实现,至少有一个或多个方法没有具体实现,即抽象方法。抽象类不能被实例化,只能作为其他类的基类来...
总结来说,`final` 关键字用于保证变量、方法和类的不可变性或防止重写,而 `finally` 关键字则是为了确保在异常处理时某些代码段的执行。理解并熟练掌握这两个关键字的用法,对于编写健壮和可靠的Java代码至关重要...
在没有`finally`的情况下,如上面提到的`WithoutFinally`类的例子所示,需要在每个`catch`块和主代码块的末尾都手动添加资源关闭的代码,这样既冗余又容易出错。有了`finally`,我们可以将这些清理操作放在`finally`...
使用UserDaoImp1类和User类的相关方法,完成如下功能: (1)对空的User类对象调用getUserInfo()方法抛出的异常处理 (2)修改UserDaoImp1类,要求用户id不能修改,修改则抛出异常 (3)使用log4j输出日志信息 2....
Java中的`final`、`finally`和`finalize`都是关键字,但它们的作用和用途各不相同,对于初学者来说,理解这些概念可能会有些困难。让我们逐一解析它们。 **final** `final`是一个修饰符,主要用于以下几个方面: ...
Java异常处理之try...catch...finally详解 Java异常处理机制是判断一门编程语言是否成熟的标准之一,对代码的健壮性有很大影响。Java语言为异常处理提供了丰富的异常类,这些类之间有严格的继承关系。所有的类都是...