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

Java8可选替换抛出几个异常的方法

巴博耘
2023-03-14

我们的一些代码在执行过程中会抛出不同的异常。我想将异常替换为可选;但optional只能通知用户该值不存在。我需要更多关于执行期间发生的各种问题的详细信息。我需要这些详细信息,主要用于错误消息和获取正确的错误代码。

在这种情况下,使用 Optional 的预期方式是什么?

共有1个答案

白晋鹏
2023-03-14

Optional 不是为了替换异常,特别是当存在不同类型的异常并且调用方应处理它们时。

如果您的方法从不返回null,除非有异常,那么将可选引入之前为@NotNull的类型似乎是一个相当大的倒退关于类型/空安全。

只需保留例外情况即可。

 类似资料:
  • 下面是我的代码,按预期工作。但我需要用Optional.ofNullable替换它 如何使用

  • 在许多地方,我得到了几个已检查的异常,如IOException、ParseException、JSoneException等。我必须做出两个选择之一- > 通过在方法签名的末尾添加抛出来抛出相同的异常。 将检查的异常包装在RuntimeException(或一些自定义实现)中,然后抛出它,以便调用者不必在任何地方添加throws子句并检查异常。 在第一种情况下,我将不得不到处抛出,但我的客户可以通

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

  • 请看下面的代码: 当我运行时,我得到以下异常: 线程“主”java.util.regex.PatternSyntaxException异常:指数4附近无与伦比的收盘“)” 0.3港元)预订:virginiawong@fahkco.com.hk4)FCR 根据我的理解,我必须对参数'(',')'进行转义,我试图这样做(看看代码中的注释部分)没有任何异常,但是我添加到字符串的换行符似乎没有出现。

  • 是否可以使用可选选项重写以下内容?在我看来,当情况需要抛出异常时,使用可选可能不是一个好主意? 尝试1: 尝试2:

  • 我需要从java调用scala代码,因此需要告诉编译器某个方法抛出某些异常。对于一个异常很容易做到这一点,但是我很难声明一个方法抛出多个异常。 这不起作用: