”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Java 中的异常处理

Java 中的异常处理

发布于2024-08-01
浏览:232

Exception Handling In Java

当你运行Java代码或程序时,它要么编译并执行,要么抛出错误。当代码抛出异常时,它是错误或异常的结果。

错误更为严重。它发生在代码范围之外,但在应用程序运行的环境内。该程序预计不会捕获并处理错误。

错误的一些示例是

  • 内存不足错误
  • 虚拟机错误
  • StackOverFlowError

异常发生在代码范围内。它也称为执行错误,这意味着它在代码执行期间发生。程序员应该捕获并处理程序中的异常。

这篇文章将更多地关注异常和运行时错误。您将了解有关异常以及如何处理 Java 程序中的异常错误的所有信息。

Java 中的执行错误类型

Java中存在三种类型的执行错误。这是每个人的细分

。编译时错误

这种类型的错误称为编译错误或检查错误。 Java 程序在编译阶段会抛出此代码。

换句话来说,这个错误是在Javac代码编译为字节码的时候发生的。编译时错误通常是由代码语法错误引起的。

例如,当程序员未能在语句末尾添加分号或未能在打印之前初始化变量时。

public class JavaExceptionCodes {
    public static void main (String []args){
        int y = 10      //no semicolon
        System.out.println(y);
    }

}

。运行时错误

运行时错误也称为异常错误或未经检查的错误。它在程序执行时发生。代码将编译,但在运行时会抛出错误。

运行时错误可以进一步分为内置异常和用户定义异常。内置异常的示例包括:

  • ArrayIndexOutOfBoundsException
  • 算术异常
  • FileNotFoundException
  • 空指针异常

例如,如果用户输入 int 而不是字符串或插入大于数组大小的值。

public class JavaExceptionCodes {
    public static void main (String []args) {
        int nombas[] = {1, 2, 3, 4, 5};
        System.out.println(nombas[6]); 

    }
}
//ArrayIndexOutOfBoundsException

。逻辑错误

也称为语义错误,如果程序的逻辑输出存在错误,就会发生这种错误。例如,3 3 显示输出 7,或者当您登录帐户并登陆另一个个人资料时。

编译时错误是最容易捕获的,因为您的 IDE 总是会向程序员指出此错误。大多数时候逻辑错误是最难看到的错误,因为代码不会抛出编译时或运行时错误。

异常处理的概念

异常处理用于捕获程序中的错误并维持程序执行的正常流程。通常,一旦程序抛出错误,代码就会停止执行。

预先捕获并处理错误将使程序能够跳过有错误的代码块并继续执行程序的其余部分。

异常处理方法:

Try – Catch – Final – Throw – Throws是Java中异常处理的方法列表。让我们通过示例详细分析它们:

。尝试

Try 用于括起可能引发异常的一行或几行代码。还有一个嵌套的 try,它是带有内部 try 块的 try。他们服务于相同的目的。

句法

try{

}

。抓住

catch 是用于捕获 try 块中抛出的错误的代码块。

句法

try{

}
catch (Exception e){

}

多个 catch 块

public class JavaExceptionCodes {
    public static void main (String []args) {
        int x = 10;
        int y = 0;
        int z ;
        int nombas [] = {5, 6, 7, 8, 9};
        try {
            System.out.println(z = x / y);
            System.out.println(nombas[6]);
        }
        catch (ArithmeticException e){
            System.out.println("Can't divide by 0. Choose another number"   e);
        }
        catch(ArrayIndexOutOfBoundsException e){
            System.out.println("Array Out Of Bound"   e);
        }
        System.out.println("End");
    }
}

。最后

最后是一个可选的代码块,通常放置在 try 和 catch 代码块之后。它用于执行重要的代码。无论程序是否抛出错误,finally 块都会被执行。

句法

try{

}
catch (Exception e){

}
finally{

}

。扔

Throw 是一个关键字,用于在方法或代码块内引发异常。

句法

public class JavaExceptionCodes {
    public static void main (String []args) {

           try { throw new ArithmeticException("Try Run");
           }
           catch (ArithmeticException e){
               System.out.println("Catch Exception Error");
           }

    }
}

。投掷

与 throw 关键字不同, throws 关键字不用于引发异常。但是,它指定该方法可能存在异常。 Throws 用于方法签名中,而不是方法内部。

处理异常的最佳实践

  1. 一个 try 块可以有多个语句(代码行)。最好创建多个 catch 块来捕获每个语句中的错误。

  2. 如果您使用多个 catch 块,请始终指定异常类型。

  3. 如果一个try块中有多个语句,并且您不知道出错的语句,则在其他异常的末尾创建一个最终的一般异常来捕获未知错误。

  4. 始终将通用异常 catch 块放在其他自定义异常 catch 块的末尾。

版本声明 本文转载于:https://dev.to/akamzchidi/exception-handling-in-java-f32?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-05-14
  • CSS强类型语言解析
    CSS强类型语言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    编程 发布于2025-05-14
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-05-14
  • 为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    Class 'ZipArchive' Not Found Error While Installing Archive_Zip on Linux ServerSymptom:When attempting to run a script that utilizes the ZipAr...
    编程 发布于2025-05-14
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. [&​​&&&&&&&&&&&&&&&默元组方法在...
    编程 发布于2025-05-14
  • Java为何无法创建泛型数组?
    Java为何无法创建泛型数组?
    通用阵列创建错误 arrayList [2]; JAVA报告了“通用数组创建”错误。为什么不允许这样做?答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<myO...
    编程 发布于2025-05-14
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-05-14
  • CSS可以根据任何属性值来定位HTML元素吗?
    CSS可以根据任何属性值来定位HTML元素吗?
    靶向html元素,在CSS 中使用任何属性值,在CSS中,可以基于特定属性(如下所示)基于特定属性的基于特定属性的emants目标元素: 字体家庭:康斯拉斯(Consolas); } 但是,出现一个常见的问题:元素可以根据任何属性值而定位吗?本文探讨了此主题。的目标元素有任何任何属性值,属...
    编程 发布于2025-05-14
  • 在JavaScript中如何并发运行异步操作并正确处理错误?
    在JavaScript中如何并发运行异步操作并正确处理错误?
    同意操作execution 在执行asynchronous操作时,相关的代码段落会遇到一个问题,当执行asynchronous操作:此实现在启动下一个操作之前依次等待每个操作的完成。要启用并发执行,需要进行修改的方法。 第一个解决方案试图通过获得每个操作的承诺来解决此问题,然后单独等待它们: co...
    编程 发布于2025-05-14
  • 解决Spring Security 4.1及以上版本CORS问题指南
    解决Spring Security 4.1及以上版本CORS问题指南
    弹簧安全性cors filter:故障排除常见问题 在将Spring Security集成到现有项目中时,您可能会遇到与CORS相关的错误,如果像“访问Control-allo-allow-Origin”之类的标头,则无法设置在响应中。为了解决此问题,您可以实现自定义过滤器,例如代码段中的MyFi...
    编程 发布于2025-05-14
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-05-14
  • Python中嵌套函数与闭包的区别是什么
    Python中嵌套函数与闭包的区别是什么
    嵌套函数与python 在python中的嵌套函数不被考虑闭合,因为它们不符合以下要求:不访问局部范围scliables to incling scliables在封装范围外执行范围的局部范围。 make_printer(msg): DEF打印机(): 打印(味精) ...
    编程 发布于2025-05-14
  • Go web应用何时关闭数据库连接?
    Go web应用何时关闭数据库连接?
    在GO Web Applications中管理数据库连接很少,考虑以下简化的web应用程序代码:出现的问题:何时应在DB连接上调用Close()方法?,该特定方案将自动关闭程序时,该程序将在EXITS EXITS EXITS出现时自动关闭。但是,其他考虑因素可能保证手动处理。选项1:隐式关闭终止数...
    编程 发布于2025-05-14
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。isement(Isement() trim whitespace whitesp...
    编程 发布于2025-05-14
  • Java的Map.Entry和SimpleEntry如何简化键值对管理?
    Java的Map.Entry和SimpleEntry如何简化键值对管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    编程 发布于2025-05-14

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3