亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

精通 Java 异常处理:try-catch、finally 与类层级详解

什么是 Java 异常?

Java 异常 是中断程序指令执行、破坏正常控制流的事件。它是封装方法内错误信息的对象,传递给运行时系统。Java 中异常主要标示标准控制流无法处理的各种错误条件。

本教程学习:

Java 错误分两大类:

  1. 编译时错误
  2. 运行时错误

编译时错误细分:

语法错误示例:

声明 int a; 正确,写 in a; 编译器报错。

同一作用域内声明 int a; 后再次声明 int a; 触发编译错误,构建时高亮显示。

运行时错误示例

运行时错误表现为异常,中断正常执行流。典型如 ArithmeticException、NullPointerException、除零错误。

这些异常源于开发者无法直接控制的条件。

精通 Java 异常处理:try-catch、finally 与类层级详解

为什么需要异常处理?

考虑访问远程服务器的程序。开发时服务器可达,代码顺利运行。生产环境服务器可能宕机,尝试连接时抛出异常。

精通 Java 异常处理:try-catch、finally 与类层级详解

仅依赖代码自然流程不足。健壮程序须预判异常并优雅恢复。

如何处理异常

异常处理是预判异常条件并提供回退逻辑的实践。常见策略:尝试主操作,失败则切换备用。

精通 Java 异常处理:try-catch、finally 与类层级详解

用传统 if-else 处理多异常类型很快变得笨重:

class Connect { if (serverIsUp()) { // 连接主服务器 } else { // 连接备用服务器 } } 

try-catch 块

Java 提供内置异常处理机制。可能抛出异常的代码放入 try 块,对应恢复代码放入一个或多个 catch 块。

精通 Java 异常处理:try-catch、finally 与类层级详解

例如 try 块尝试连主服务器,catch 块处理回退逻辑。

服务器正常时跳过 catch;宕机时抛出异常,执行 catch 块。

精通 Java 异常处理:try-catch、finally 与类层级详解

try-catch 语法:

try { // 可能抛异常的语句 } catch (ExceptionType name) { // 恢复语句 } 

实战示例

步骤 1:复制代码到 IDE。

class JavaException { public static void main(String args[]) { int d = 0; int n = 20; int fraction = n / d; // 抛出 ArithmeticException System.out.println("End Of Main"); } } 

步骤 2:编译运行。程序抛出 ArithmeticException 并在第 5 行终止。

步骤 3:修改代码使用 try-catch:

class JavaException { public static void main(String args[]) { int d = 0; int n = 20; try { int fraction = n / d; System.out.println("This line will not be executed"); } catch (ArithmeticException e) { System.out.println("Caught exception: " + e); } System.out.println("End Of Main"); } } 

步骤 4:再次编译运行。输出显示异常被优雅处理,程序继续执行最终打印。

精通 Java 异常处理:try-catch、finally 与类层级详解

捕获的 ArithmeticException 对象 e 包含详细信息,可用于日志或恢复。

异常类层级

Java 异常层级源于 Throwable 类,两个直接子类:Error 和 Exception。Error 表示不可恢复状况(如 OutOfMemoryError),Exception 覆盖可程序化处理的条件。

精通 Java 异常处理:try-catch、finally 与类层级详解

嵌套 try-catch 示例

复制以下代码:

class JavaException { public static void main(String args[]) { try { int d = 1; int n = 20; int fraction = n / d; int g[] = {1}; g[20] = 100; // ArrayIndexOutOfBoundsException } catch (ArithmeticException e) { System.out.println("Caught ArithmeticException: " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Caught ArrayIndexOutOfBoundsException: " + e); } System.out.println("End Of Main"); } } 

d 为 1 时抛出 ArrayIndexOutOfBoundsException。改 d 为 0 触发 ArithmeticException。取消注释宽泛 catch (Exception e) 会导致编译错误,因它遮蔽更具体处理器。

finally 块

finally 块无论是否发生异常都执行,适合清理任务。

try { // 危险操作 } catch (ExceptionType e) { // 错误处理 } finally { // 清理动作 } 

示例:

class JavaException { public static void main(String args[]) { try { int d = 0; int n = 20; int fraction = n / d; } catch (ArithmeticException e) { System.out.println("Caught exception: " + e); } finally { System.out.println("Inside the finally block"); } } } 

运行程序输出 finally 块消息即使抛出异常。改 d 为 1 消除异常;finally 块仍运行。

总结:

java

  1. C++ 异常处理实战:try、catch、throw 完整指南与示例
  2. C# 异常处理完全指南:try-catch-finally、异常类型、自定义异常与最佳实践
  3. 精通 Python 异常处理:try、except、else 与 finally 详解
  4. 精通 Python 异常处理:try、except、finally 与 raise 高效用法
  5. 精通 Java 异常处理:try-catch、finally、throw 与 throws 详解
  6. 精通 Java 异常处理:try-catch-finally 与资源管理
  7. 精通 Java 多异常捕获:单 catch 块处理多异常
  8. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  9. 精通 Java String.endsWith():检查字符串后缀(示例)
  10. Java BufferedReader 读取文件:实战指南与示例
  11. Java 插入排序算法详解:核心原理、完整代码与步骤演示
  12. Java 9 try-with-resources 改进:Effectively-final 变量直接使用