好像在 java 面试的时候关于异常的内容都是必问的东西,这里就不介绍有关异常的接口和主要的类了,也不讨论性能问题,就简单总结下 try...catch...finally 在一个方法作用域内的使用。
1,一个方法内可以有多个 try...catch...finally 语句块,还可以彼此嵌套;
public static String TestTry() { try { try { } catch (Exception e) { // TODO: handle exception } finally { } } catch (Exception e) { try { } catch (Exception e2) { // TODO: handle exception } finally { } } finally { try { } catch (Exception e2) { // TODO: handle exception } finally { } } try { } catch (Exception e) { // TODO: handle exception } finally { } return "return"; // 这里必须写 }
2,如果一个有返回值的方法内有多个 try...catch...finally 语句块,return 语句要么写在任意一个 try...catch 内,要么写在方法的最后,否则编译无法通过,如果 return 语句写在方法的最后,那么以上 try...catch...finally 语句中的 每一个 finally 块内的代码都将会执行;
public static String TestTry2() { try { //return "hello1"; } catch (Exception e) { // TODO: handle exception } finally { System.out.println("final1"); } try { //return "hello2"; } catch (Exception e) { // TODO: handle exception } finally { System.out.println("final2"); } return "hello3"; // 这里必须写 }
3,无论方法内是否发生异常(jvm 可以处理的异常),finally 块内的代码都将会执行。
public static String TestTry3() { try { return "hello"; //return String.valueOf(9/0); } catch (Exception e) { // TODO: handle exception } finally { System.out.println("final"); } return "re"; // 这里必须写 }
相关推荐
3. 多个`catch`块:你可以在一个`try`语句后放置多个`catch`块来处理不同类型的异常。这使得你可以针对不同类型的异常执行不同的操作。例如: ```csharp try { // 可能抛出异常的代码 } catch (IOException ex) { ...
`using`语句是另一种确保资源释放的方式,它在作用域结束时自动调用`Dispose()`方法。这可以看作是隐式的`try...finally`。 理解和熟练掌握`try...catch`机制对于编写健壮的C#代码至关重要。通过正确地处理异常,...
- **with语句**:尽管不推荐使用,但with语句与try...catch结合可以在动态作用域中捕获错误。 - **Promise**:在异步编程中,可以使用catch方法处理Promise的拒绝情况。 了解这些基本概念和使用技巧后,开发者...
- 当使用try...catch包裹异步代码时(如事件处理、定时器回调等),应当注意异步代码的执行上下文可能与try...catch不在同一个作用域内,错误可能无法被直接捕获。 最后,根据文件内容提供的示例代码,这里还有一个...
- `try`、`catch`和`finally`不能单独使用,它们可以组合成`try...catch...finally`、`try...catch`或`try...finally`的形式。 - 各个块内的变量作用域仅限于自身块,不能跨块访问。如果需要共享变量,应将其定义在...
5. **变量的作用域**:在`try`块内部声明的变量仅在`try`块内部有效,不能在`catch`或`finally`块中直接访问。然而,如果变量在`try-catch-finally`块之外声明,它们在整个代码块内都是可见的。 6. **检查异常的...
2. `try`、`catch`和`finally`块内的变量作用域仅限于各自块内,如果需要跨块访问,需要在外部定义。 3. 多个`catch`块时,JVM会按顺序匹配异常类型,匹配到第一个合适的`catch`块后,不会继续匹配后续的`catch`块。...
7. **异常处理**:知道如何使用try-catch-finally语句,理解不同类型的异常,以及自定义异常的创建。 8. **IO流与NIO**:掌握字节流、字符流、对象流的使用,理解缓冲区的概念,以及新IO(NIO)的相关特性。 9. **...
A.try 代码块必须与 finally 代码块配对使用B.catch 代码块可以单独使用,不需要 try 代码块C.throw 用于抛出异常,通常在方法中使用D.try-catch-finally 结构中的 finally 代码块是可选的正确答案: ACD ...
局部内部类只能在定义它的方法或作用域中使用;匿名内部类适用于创建只需要一次使用的类对象;静态内部类不能访问外部类的实例变量,只能访问静态变量。 12. 用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? ...
我们使用`try-catch`结构来捕获这个异常,并提供了一个特定的`catch`块来处理它。此外,还有一个通用的`catch`块用于捕获所有其他类型的异常。`finally`块确保无论是否发生异常,某些清理操作(如释放资源)总是会...
3. **函数**:函数是一个重要的作用域容器,当函数被调用时,会创建一个新的作用域,该作用域内的变量仅在函数内部可见,这被称为局部作用域。 4. **全局**:全局作用域是所有其他作用域的基础,它包含了所有未在...
15. 变量按作用域分类为局部变量(在方法内部定义)、类变量(静态成员变量)、方法参数以及实例变量(非静态成员变量)。 16. 捕获异常是通过`try-catch-finally`语句实现的,其中`try`块包含可能会抛出异常的代码...
5. 异常处理:Java使用try-catch-finally结构来捕获和处理异常,异常是程序运行时的错误,可以是编译时错误或运行时错误。 6. 接口:接口是一组方法签名的集合,用于定义类的行为规范。类可以实现多个接口,实现多...
在一个static方法内部不能直接调用非static方法,因为非static方法依赖于类的实例,而非static方法在没有对象实例的情况下就已经可以执行了。 14. Integer与int的区别? int是基本数据类型,而Integer是int的包装...
如果该异常没有被当前作用域内的`catch`块捕获,程序将向上回溯到最近的包含`try`块的上一级作用域,寻找合适的`catch`块来处理异常。如果没有找到匹配的`catch`块,异常将继续向更高级别的作用域传播,直到找到处理...
过度使用try-catch块会影响性能,尽量避免在finally块中进行耗时操作,因为无论是否发生异常,finally块都会被执行。只捕获必要的异常,避免使用Exception作为捕获类型,以确保问题定位的精确性。 同步和并发优化是...