
您的信用卡有限额,如果您消费超过限额,您的购买可能会被拒绝。这种超出限制以接收负面响应的概念并不仅仅特定于信用卡 - 在Java中,可以根据特定要求接受或拒绝许多事情。
例如,当Java方法尝试执行无效的操作时,我们说它“抛出异常”。本文将重点介绍如何在 Java 中抛出异常。我们还将介绍一些不同类型的异常、如何捕获它们以及如何创建自定义异常。
因此,无论您是想弄清楚如何在 Java 中抛出异常,还是想了解有关 Java 异常处理如何工作的更多信息,本文都适合您。
在 Java 中,异常是表示错误的对象。它发生在程序执行期间,并破坏正常的指令流。当程序遇到特殊情况时,将“抛出”异常。根据程序的编写方式,可能会捕获并处理此异常,或者可能导致程序崩溃。
发生异常时,Java 运行时系统 (JVM) 会自动创建一个对象,其中包含有关错误的信息。然后,此对象将向上传递调用堆栈,直到由某些代码处理。如果没有代码捕获异常并输出错误消息,程序将终止。
需要注意的是,Java 程序中可能会出现两种类型的问题:异常和错误。异常(大部分)是可恢复的,而错误则不是。
错误通常是由您无法控制的问题引起的,例如硬件故障或内存不足。由于错误无法从中恢复,因此它们始终会导致程序终止。另一方面,异常指示应用程序可能能够恢复的条件。
例如,如果您的程序尝试读取的文件找不到,则这是一个例外。程序可以捕获此异常,并提示用户输入新文件名。但是,如果您的程序尝试从不存在的文件读取,则会导致错误 - 您的程序无法恢复任何操作。
现在我们已经讨论了异常和错误之间的区别,让我们看看如何在 Java 中抛出异常。
在 Java 中有两种抛出异常的方法:使用 “throw” 关键字或创建 Exception 类的新实例。
我们将首先了解如何使用 “throw” 关键字引发异常。为此,您需要创建 Exception 类的新实例,然后将其传递给 “throw” 关键字。
引发异常的语法如下。
使用语法,假设我们有一个计算三个数字平均值的方法。但是,如果任何数字小于 0,我们希望抛出异常。该方法如下所示:
在此示例中,我们使用“throw”关键字来抛出IllegalArgumentException。JVM 将捕获此异常,并输出错误消息。我们可以抛出已检查或未选中的异常,我们将在后面讨论。
除了 Java 中的内置异常之外,您还可以创建自己的自定义异常。创建自定义例外允许您向用户提供更多信息性的错误消息。
可以通过扩展 Exception 类来创建自定义异常。例如,假设我们要为无效输入创建自定义异常。异常可能如下所示:
在上面的示例中,父类是 Exception。此类为所有异常提供基本功能。类是 Exception 的子级,为无效输入提供特定的实现。
现在,我们可以像使用内置异常一样使用自定义异常。抛出 InvalidInputException 的代码如下所示:
上面的代码将创建一个新的异常,其中包含以下消息:“输入无效”。
现在我们知道了如何抛出异常,让我们看看如何捕获它们。
引发异常时,Java 运行时系统会自动创建一个包含错误相关信息的对象。然后,此对象将向上传递调用堆栈,直到某些代码处理它。
如果没有代码捕获异常并输出错误消息,程序将终止。但是,如果捕获异常,则可以以某种方式处理它,然后继续运行程序。
您可以使用“try”和“catch”关键字来捕获Java中的异常。“try”关键字指示可能发生异常的代码段。“catch”关键字捕获异常并处理它。
请看以下示例:
在此代码中,“try”块包含可能引发 IOException 的代码。如果发生IOException,它将被“catch”块捕获,该块将以某种方式处理它。
注意:对于单个“try”块,您可以有多个“捕获”块。如果要以不同的方式捕获不同类型的异常,这将非常有用。例如:
在此代码中,有两个“捕获”块。第一个“catch”块捕获IOExceptions,第二个“catch”块捕获CustomExceptions。如果发生 IOException,它将由第一个“catch”块处理,如果发生 CustomException,它将由第二个“catch”块处理。
除了“try”和“catch”块之外,您还可以有一个“最终”块。“finally ”块将始终执行,无论是否引发异常。例如:
在此代码中,无论是否引发异常,“finally ”块都将执行。这对于清理任务(如关闭文件或数据库连接)非常有用。
现在我们已经了解了如何引发和捕获异常,让我们看看已检查异常和未检查异常之间的区别。
Java 中有两个例外:选中和未选中。让我们看一下这些类型的异常之间的区别。
选中的异常在编译时发生,并由编译器检查。如果编译器未捕获异常,则程序将不会编译。
必须捕获检查的异常,或者在它们发生它们的方法中声明。编译器将查找“try”、“catch”或“throws”关键字来处理检查的异常。
如果我们有一个打开文件的方法,但该文件不存在,则会抛出已检查的异常。请看以下示例。
在上面的示例中,我们使用 try-catch 块来捕获 FileNotFoundException。“try”块包含可能引发异常的代码。 “catch”块包含在引发异常时将执行的代码。如果找到文件,则不会执行 catch 块中的代码。
捕获异常是由用户输入或代码中发生的问题(如 NullPointerException)引起的。
已检查异常的示例包括:
未经检查的异常在运行时发生,编译器不会检查这些异常。这些异常通常是由编程错误、API 使用不当或逻辑错误引起的。
例如,如果我们尝试将一个数字除以 0。与已检查的异常不同,您无需捕获或声明未经检查的异常。但是,这样做被认为是最佳做法。
以下是捕获未经检查的异常的方法:
在上面的例子中,我们试图将一个数字除以 0,这将抛出一个 ArithmeticException。我们使用 try-catch 块来捕获此异常并打印错误消息。
未经检查的异常示例包括:
如您所见,Java 中有两种类型的异常:选中和未选中。必须捕获或声明选中的异常,而不需要捕获或声明未选中的异常。但是,最佳做法是捕获或声明所有异常。
由于错误可能发生在任何程序中 - 无论写得多么好 - 重要的是要知道如何在异常发生时处理它们。异常允许您编写更可靠的代码,这些代码可以优雅地处理意外情况,而不是崩溃。
通过抛出异常,我们可以告诉 Java 运行时系统出了点问题,我们需要它来执行一些特定的操作。在本文中,我们介绍了如何引发异常以及如何捕获异常。您可以通过探索一些 Java 内置异常类或创建自己的自定义异常来进一步了解如何使用异常。
1.由于本网站资源是网络搜集整理而成,版权均归原作者所有。本站仅提供一个观摩学习的环境,将不对任何资源负法律责任。
2.若无意中侵犯到您的版权利益,请来信联系我们,我们会在收到信息后会尽快给予处理!
3.本站为纯属分享资源站点,网站内所有资源仅供学习交流之用,请勿用作商业用途,并请于下载后24小时内删除,谢谢。
4.如有转发本站上的资源,请出转载说明,来源于今日网址导航:https://www.webtoday.cn/,谢谢合作。