异常处理 Java
⚡ 智能摘要
Java 异常处理提供了一种结构化的机制来管理运行时错误,这些错误会中断正常的程序流程。它使用 try、catch、finally、throw 和 throws 关键字来检测、隔离和从异常情况中恢复,同时保持程序的正常运行。ping 应用程序稳定可靠且可预测。

什么是例外情况? Java?
An 异常在 Java 错误事件是指中断程序指令执行并扰乱程序正常执行流程的事件。它是一个封装了方法内部发生的错误事件信息的对象,并被传递给运行时系统。 Java异常主要用于指示不同类型的错误情况,以便开发人员能够以可控的方式做出响应。
错误大致可分为两类。 Java:
- 编译时错误
- 运行时错误
编译时错误还可以分为以下两种类型:
- 语法错误
- 语义错误
语法错误示例:
而不是声明 int a; 你错误地将其声明为 in a;编译器会因此报错。
语义错误示例: 你声明了一个变量 int a; 几行代码之后你再次声明一个整数为 int a;。编译代码时,所有这些错误都会突出显示。
运行时错误示例
运行时错误被称为 特殊课程异常是指任何中断程序正常执行流程的事件。例如,算术异常、空指针异常、除以零异常等等。 Java 这些条件往往超出开发商的直接控制范围。
点击 开始 如果视频无法访问
为什么我们需要异常处理?
假设你编写了一个用于访问服务器的程序。开发过程中一切正常。ping 在受控的本地环境中运行代码。
在实际生产运行期间,服务器可能会宕机。当你的程序尝试访问服务器时,会引发异常,如果不妥善处理,程序将突然终止。
如何处理异常 Java
到目前为止,我们已经看到,异常情况往往超出开发人员的控制范围。然而,将代码故障归咎于环境问题并非真正的解决方案。你需要健壮的编程来处理异常情况。这样的代码被称为…… 异常处理程序.
在我们的例子中,良好的异常处理意味着当主服务器宕机时,程序会自动连接到备用服务器。
为了实现这一点,你可以编写代码,使用传统的 if 和 else 条件语句连接到服务器。你需要检查服务器是否宕机,如果宕机,则编写代码连接到备用服务器。但是,当你的代码包含多个分支时,这种使用“if”和“else”分支的代码组织方式效率不高。 Java 例外 处理。
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
尝试捕获块 Java
Java 提供内置的异常处理机制,将正常逻辑与错误恢复逻辑分离。
- 正常代码进入 TRY 块。
- 异常处理代码进入 CATCH 块。
在我们的示例中,TRY 代码块包含连接服务器的代码。CATCH 代码块包含连接备用服务器的代码。如果服务器正常运行,则 CATCH 代码块中的代码将被忽略。如果服务器宕机,则会抛出异常,并执行 CATCH 代码块中的代码。
所以,这就是异常处理的方式。 Java.
try 和 catch 的语法
try{ statement(s) } catch (exceptiontype name){ statement(s) }
try-catch 代码块示例
步骤1) 将以下代码复制到编辑器中。
class JavaException { public static void main(String args[]){ int d = 0; int n = 20; int fraction = n/d; System.out.println("End Of Main"); } }
步骤2) 保存文件并编译代码。使用命令 `java` 运行程序。 Java例外。
步骤3) 第 5 行出现算术异常(除以零),第 6 行永远不会执行。
步骤4) 现在让我们来看看 try 和 catch 如何帮助我们处理这个异常。我们将把导致异常的代码行放入一个 try 语句块中。 尝试 块,然后是 捕捉 块。将以下代码复制到编辑器中。
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("In the catch Block due to Exception = " + e); } System.out.println("End Of Main"); } }
步骤5) 保存、编译并运行代码。您将得到以下输出。
如您所见,异常已被处理,最后一行代码也已执行。另外请注意,第 7 行不会执行,因为…… 一旦引发异常,控制流就会跳转到 catch 块。
注意: ArithmeticException 对象“e”包含有关所发生异常的信息,这在采取恢复措施时非常有用。
Java 异常类层次结构
当一个 catch 语句执行完毕后,其他 catch 语句将被跳过,程序会在 try 和 catch 代码块之后继续执行。嵌套的 catch 代码块必须遵循异常层次结构,从最具体的子类到最一般的父类。
- 所有异常类 Java 扩展 Throwable 类。Throwable 有两个子类,Error 和 Exception。
- Error 类定义了程序在正常情况下不应该发生的异常或问题,例如内存错误、硬件错误或 JVM 错误。
- Exception 类表示程序可以处理的异常,程序可以使用 try 和 catch 块从这些异常中恢复。
- RuntimeException 是 Exception 类的子类。这类异常表示运行时发生的未经检查的异常,这些异常在编译时无法检测到。例如,除以零异常和空指针异常都属于 RuntimeException。
- 在输入和输出操作期间会生成 IOException 异常。
- InterruptedException Java 在多线程操作期间,当某个线程被中断时,就会生成此错误。
示例:try 和 catch 代码块的嵌套
步骤1) 将以下代码复制到编辑器中。
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; } /*catch(Exception e){ System.out.println("In the catch block due to Exception = "+e); }*/ catch (ArithmeticException e) { System.out.println("In the catch block due to Exception = " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("In the catch block due to Exception = " + e); } System.out.println("End Of Main"); } }
步骤2) 保存文件并编译代码。使用以下命令运行程序: java的 Java特殊课程.
步骤3) 出现 ArrayIndexOutOfBoundsException 异常。请将 int d 的值更改为 0。保存、编译并运行代码。
步骤4) 必须生成一个 ArithmeticException 异常。
步骤5) 取消第 10 行到第 12 行的注释。保存、编译并运行代码。
步骤 6)编译错误? 这是因为 Exception 是 ArithmeticException 的基类。ArithmeticException 抛出的任何异常都可以由 Exception 类处理。因此,ArithmeticException 的 catch 代码块永远不会被执行,从而导致其冗余。这就是编译错误的原因。
Java 最终块
finally 块是 无论是否引发异常都执行 在 try 块中。它是 可选 可与 try 代码块一起使用。finally 代码块是释放资源(例如数据库连接、文件或网络套接字)的合适位置。
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
如果在 try 代码块中引发异常,则在 catch 代码块执行完毕后,将执行 finally 代码块。
最后块的示例
步骤1) 将以下代码复制到编辑器中。
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("In the catch block due to Exception = "+e); } finally{ System.out.println("Inside the finally block"); } } }
步骤2) 保存、编译并运行代码。
步骤3) 预期输出:即使引发异常,finally 代码块也会被执行。
步骤4) 将变量 d 的值更改为 1。保存、编译并运行代码,观察输出结果。
最佳实践 Java 异常处理
遵循一些行之有效的规则将有助于你保持…… Java 代码具有弹性、可读性和易于调试的特点:
- 首先捕获最具体的异常,然后再捕获更一般的异常,以保持异常层次结构的完整性。
- 避免使用空的 catch 代码块。至少要记录异常,以免丢失根本原因。
- 使用 finally 代码块或 try with resources 语句来释放文件、套接字和数据库连接。
- 仅当调用者能够合理恢复时才抛出已检查异常,而对于编程错误则使用未检查异常。
- 将底层异常封装在有意义的业务异常中,以保持 API 连接正常。tracts 干净。
- 在多线程代码中,永远不要默默地吞掉 InterruptedException,而应该恢复中断标志。







