当前位置: 首页 > 知识库问答 >
问题:

抛出异常的意义

宰父保臣
2023-03-14

抛出异常有什么意义?例如,我偶然发现:

static List<Integer> list(int [] a) {
    if (a == null)
        throw new NullPointerException();
        //...

但是当你不扔零点的时候,你也会得到一个零点?我经常看到这个,我想知道这是否是一个学习的好习惯?

共有3个答案

彭礼骞
2023-03-14

我总是发现抛出异常是一个设计和易读性的问题。例如,通常当我设计一些东西时,我更喜欢在错误发生的地方处理它们。然而,同样有效的设计是抛出异常并在其他地方处理它。我见过一些抽象,通常您的流程类似于此...

流量控制 -

您可能还会在这里找到更完整的答案:何时捕获异常与何时抛出异常?

艾飞宇
2023-03-14

抛出的目的是防止错误停止程序。

如果这是一个足够致命的错误,您的程序无论如何都会停止。但如果程序可以继续,它会继续,只需告诉您发生了错误。

在许多情况下,你分配一个函数来报告错误,因为你抛出了它,并且知道它是什么。

农飞星
2023-03-14

还不如失败的快。例如,在你的例子中,函数在引用变量“a”之前可能会做很多事情,导致很多不必要的处理..如果你从一开始就知道“a”是空的,那么最好是立即失败。您也可以将自定义错误消息附加到异常中。

 类似资料:
  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 问题内容: 考虑以下代码: 无需添加方法签名即可编译该代码。(它与同样表现到位,太)。 我理解为什么 可以 安全地运行它,因为实际上不能将其引发在块中,因此不能引发已检查的异常。我有兴趣知道在何处指定此行为。 并非永远都不会达到目标:以下代码也会编译: 但是,如果抛出一个检查的异常,它不会像我期望的那样编译: 在JLS Sec 11.2.2中 ,它说: 一,其抛出的表达式语句(§14.18)具有静

  • 在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。 您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。 您还可以创建自己的异常类来表示在您编写

  • 问题内容: 我试图在Netbeans中重构一个大型程序,但我有点迷茫。我从来没有非常模块化,但是现在通过实际学习如何做到这一点来尝试纠正这种情况,并在将来纠正这种情况。不幸的是,我在将某些教程翻译成我的程序时遇到了麻烦。所以我希望这里有人可以帮忙。目前,我正在尝试分解一部分采用特定格式的文件并制成表格的代码。我知道我需要创建一个类并使用它来创建表对象,但是我不确定如何做。我有一个主文件,用于获取文

  • 问题内容: 我目前正在使用play2框架。 我有几个正在抛出的类,但是play2s全局处理程序使用throwable而不是异常。 例如我的一门课是抛出一个。我是否可以检查可抛物体(如果是)? 问题答案: 您可以使用它来检查它是否存在。 例: 假设是参考。

  • throw 关键字表示发生了异常,称为抛出异常。throw 通常指定一个操作数(我们将介绍不指定操作数的特殊情况)。throw 的操作数可以是任何类型,如果操作数是个对象,则称为异常对象。也可以抛出条件表达式而不是抛出对象,可以抛出不用于错误处理的对象。 抛出异常时,指定相应类型的最近一个异常处理器(对抛出该异常的try块)捕获这个异常。try块的异常处理紧接在try块后面。 抛出异常时,生成和初