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

Java:有什么方法可以指定何时抛出异常?

王曜文
2023-03-14
void doSomething(int data) throws Exception{
    if(data < 10) throw new Exception("Exception thrown"); // throws an exception based on a condition
    else { ... } // logic goes here
}
public static void main(){
    doSomething(11); // Error! unreported exception 
}

所以我必须做以下其中之一:

  1. 在每个doSomething调用周围添加try catch块
  2. 在main中添加throws语句
  3. 删除doSomething中的throws语句
  4. 将该条件作为前提条件,这样不遵循该条件就会导致未定义的行为或类似的行为。

3将不起作用,因为doSomething可能会在客户端使用时引发异常。1和2简直是多余的,我认为应该避免。

我的问题是:在提到的选项(或任何其他选项)中,什么是最好的出路,什么是最好的实现方式?

共有1个答案

唐茂实
2023-03-14

这实际上取决于您正在处理的上下文。

如果您希望代码在引发异常的那一刻停止执行,您可以使用运行时异常,而不必捕获它们。

好的用例是RESTendpoint。如果在计算响应的过程中出错,我们可以抛出responseStatusException-运行时异常,它将立即向客户机返回Http响应错误,并停止代码的任何进一步执行。

 类似资料:
  • 我基本上理解检查异常的潜在问题,以及Kotlin为什么省略它们。然而,我遇到的问题是,我找不到任何简单的方法来清楚地向调用方指示函数可能抛出的异常。 我在Python中遇到过无数次这个问题,我的程序在运行几个月后会崩溃,因为我没有意识到我正在使用的某个库中的一个函数会引发一个特殊的异常。尽管被迫捕获异常可能会有相当大的问题,但清楚地看到函数可能抛出的所有潜在异常还是不错的。 那么回到问题上来,有没

  • 我有密码 我想知道抛出怎么会发生这种情况。这显然发生在我的应用程序的一个用户身上,但我无法跟踪出了什么问题。

  • 为什么重写方法可以在java中抛出未经检查的异常? 为什么重写方法不能抛出比重写方法更广泛的异常?这不是我的问题。我只是想知道为什么重写方法可以抛出未检查的异常,而不能抛出已检查的异常。

  • 我已经用Java编写代码一段时间了。但有时,我不知道什么时候应该抛出异常,什么时候应该捕获异常。我正在做一个有很多方法的项目。层次结构是这样的- 所以目前我正在做的是-我在所有方法中抛出异常并在方法A中捕获它,然后将其记录为错误。 但我不确定这是否是正确的方法?或者我应该开始在所有方法中捕获异常。这就是为什么这种混乱始于我的 - 我什么时候应该抓住异常与何时应该抛出异常。我知道这是一个愚蠢的问题,

  • 我在Hackerrank上解决了一个任务。com,问题是这样的: 你有一个数组。这个数组包含数字。 现在输入两个数字: 第一个描述了一个总和 第二个描述了您添加在一起的索引量(序列长度) 最后你得到的序列的数量其总和就是你定义的数字 例如: 我为此写了这段代码: 由于我不知道需要多少次计数(例如,序列长度为3的6长度数组有4个序列(1,2,3,4 | 3,4,5 | 4,5,6)),当索引超出范围

  • 我有这个Spring Data,它处理数据库上的CRUD操作。 是我数据库的User表的实体。向存储库添加以下操作: 如文档中所述,如果给定的id为null,则删除和查找操作会抛出,而保存操作不会抛出任何异常。 问题是Crudepository的javadoc没有提到这些操作引发的其他异常。例如,如果提供的ID在数据库中不存在,它不会告诉操作抛出。 在操作的javadoc中,不清楚在插入一个新用户