问题标签 [unchecked-exception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

java - 是否在 JAVA 中检查异常?

考虑以下代码

myMethod1()抱怨没有处理Exception e被抛出的东西,我理解这Exception是因为检查异常并且你被迫处理它,因此myMethod1_fixed()添加throws Exception并且它很高兴。

现在有了myMethod2()它也扔了Exception e,但它虽然没有,但它很高兴throws Exception,意思Exception是不受约束?

0 投票
1 回答
254 浏览

optional - 返回 java.util.Optional 或抛出 (Checked/Unchecked) 异常

我需要创建一种按员工姓名查找员工的方法。有以下三种可能的解决方案来实现这一点:

  1. 员工 findEmployeeById(long empId) 抛出 NoSuchEmployeeCheckedException;
  2. 可选的 findEmployeeById(long empId);
  3. 员工 findEmployeeById(long empId) 抛出 NoSuchEmployeeUnCheckedException;

如果 id 在我的存储库中匹配,第一种方法将返回一个员工实例,否则抛出一个检查异常实例NoSuchEmployeeCheckedException

第二种方法将返回 java8 的 Optional 的实例,同时不会抛出异常。

最后一种方法与第一种方法类似,但抛出一个 UnCheck 异常实例NoSuchEmployeeUnCheckedException而不是已检查异常。

我在 StackOverFlow 上阅读了多篇关于已检查与未检查异常的帖子。老实说,我仍然不太确定如何正确使用它们。

Joshua Bloch 在《Effective Java》中说

对可恢复条件使用检查异常,对编程错误使用运行时异常(第 2 版第 58 条)

  1. findEmployeeById 是可恢复的条件吗?
  2. 我需要使用 Optional 还是抛出异常?
  3. 哪种解决方案最好?
0 投票
2 回答
639 浏览

java - 如何知道我的代码是使用检查异常还是未检查异常?

是否有任何关键字或特殊的代码语法,如果我查看它,我会知道这里使用了未经检查的异常或正在使用检查的异常?

通过阅读以前提出过这个问题的帖子,在我看来,知道它是检查还是未检查的唯一方法是查看异常是否扩展了 Exception 或 RuntimeException。

这真的是唯一知道的方法吗?因为我认为编写未检查和检查异常的语法也应该不同,但我不确定要查找什么。

0 投票
2 回答
834 浏览

java - Guava Preconditions RuntimeExceptions 处理

据我了解,在更改某些对象状态之前,我们使用 Guava Preconditions 快速失败(是来自 stackoverflow 的一个很好的答案)。这很好。但是它会引发运行时异常,这不是应用程序用户最喜欢的异常(500 错误等等......)。所以我需要你在设计方面给我一些帮助。

我有一个声明许多方法的接口。每个方法都有必须控制的参数(例如:非空)。所以在实现类中我使用如下指令:

但是,调用此 API 的程序可能会由于运行时异常而崩溃,在本例中为 NullPointerException。

那么如何处理这些未经检查的异常呢?

谢谢你。

-------- 编辑应用层:

  • 数据访问层

  • API 声明交换 DTO 的方法

  • 使用 Guava 实现 API 和检查参数的过程

  • Webservice 依赖于流程层

0 投票
1 回答
89 浏览

java - Why JVM does not allow to throw Unchecked Exception from static block?

Why JVM does not allow to throw Unchecked Exception from static block? But it still allows them implicitly (e.g: calling method on null object).

Note: The question is more academic and not from real life issue.

0 投票
2 回答
3425 浏览

exception - 如何在 Kotlin 中测试预期的未检查异常?

我正在尝试在 Kotlin 中编写一个测试,以确保在特定情况下引发未经检查的异常。

我正在尝试这样使用org.junit.jupiter.api.Assertions.assertThrows

当我尝试这个时,我得到一个

类型推断失败的编译器错误

因为我Exception的不是 aCheckedException而是 a RuntimeException。有没有什么好方法可以在不进行天真的 try catch 的情况下测试这种行为?

0 投票
0 回答
142 浏览

java - 在不抑制警告的情况下删除 Java 中的未经检查的异常

我有一种方法可以比较两个 json。

所以它按预期工作,没有问题。但是,以下部分以黄色突出显示!

(ValueMatcher)(o1, o2) -> 真

它给出以下警告:

如果我将以下内容放在类上方,它就会消失:

@SuppressWarnings("未选中")

但是有没有其他方法可以正确修复它而不是抑制警告?!

请在当前上下文中举例

0 投票
0 回答
22 浏览

java - 在 Java 中传播所有异常是什么意思

我被告知要传播所有异常。这句话表示主动传播,例如:

公共 void doSomething() 抛出 SomeException{

或被动传播:

public void doSomething() 抛出 SomeException {

}

.传播所有异常是什么意思?

干杯

0 投票
0 回答
55 浏览

c# - 当没有检查的异常时如何在 C# 中预测异常

在 Java 中,对可以抛出 s 的函数的调用Exception需要使用 atry-catch或通过throws Exception在函数签名中添加 a 来预测它们。

我对它们的主要用途是在我的顶级调用代码中,我只将try-catches 放在显式 throw Exceptions 的部分中。

但是,由于 C# 没有检查异常,我能想到的唯一方法是预期Exceptions 是用try-catches 包围我的顶级调用代码的所有部分。我个人不喜欢这种方法,原因如下:

  1. 它可能导致代码非常混乱,将try-catches 放在不需要它们的地方。

  2. 我可能会错过需要try-catch.

如何Exception在 C# 中的顶级调用代码中正确预测 s?

0 投票
2 回答
44 浏览

java - 有和没有赋值给变量的未经检查的强制转换行为

为什么 main 中的第一行不抛出 ClassCastException 而第二行呢?