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

Java 抛出异常定制消息?

仲君昊
2023-03-14

我知道您可以使用try-catch块对自定义消息抛出异常,例如:

try {
   process...
} catch (IOException e) {
   throw new IOException(..)
}

但是如果我们在实用程序类中有一个方法,例如:

public void processFiles() throws IOException {
   ...
}

然后我们进入服务类,如下所示:

public void method() throws IOException {
   Response response = new Response()
   try {
      UtilityClass.processFiles()
   } catch (IOException e) {
      response.setMessage("Error processing files: " + e.getMessage());
      return new ResponseEntity<Response>(response, HttpStatus.INTERNAL_SERVER_ERROR); 
   }
} 

有没有一种方法可以自定义设置来自实用程序类方法<code>processFiles()</code>的消息及其<code>抛出的IOException</code>,而不是在该方法内部使用try-catch块?

共有1个答案

宰父俊彦
2023-03-14

您无法设置消息,但可以创建一个新的异常,其中包含所需的消息和相同的堆栈跟踪:

} catch (IOException e) {
  IOException ee = new IOException ("your message");
  ee.setStackTrace(e.getStackTrace());
  throw ee;
}

当然,如果< code>e是一个< code > FileNotFoundException ,那么这将把它作为一个IOException抛出,而不是一个子类,所以它不会达到相同的效果。

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

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

  • 我是一名Java编程新手(实际上已经在学习),我对如何处理不同的消息有些怀疑。 我的目标是将这些不同的消息包含在同一个类(CustomExcpse类)中,以避免在从其他类抛出新CustomExceptions的每个方法上一遍又一遍地编写相同的字符串。 到目前为止,我编码: > 一个自定义异常类,它从异常扩展而来,具有不同的消息(在示例中只有两个,但还有更多)作为Strings包含,当然还有构造函数

  • 问题内容: 除了抛出,这意味着我方法的所有调用者都需要捕获Exception(可以包含RuntimeExceptions),我想在出现问题时抛出一种更特定类型的异常。 我可以创建自己的扩展了Exception或其他异常类型的异常类型,但是我很好奇是否可以重用Java语言所附带的一些异常,例如: IllegalArgumentException UnsupportedOperationExcepti

  • 我正在尝试使用Spring Boot 2.1给出的验证JWT令牌内的声明。问题是Spring总是使用默认异常消息抛出异常: 即使我创建了一个扩展ClientAuthenticationException的自定义异常,我也会收到相同的异常消息。 当JWT声明验证失败时,我想修改异常消息。这是我的配置类: 这是我的JWTClaimVerifier类: 当JWT声明验证失败时,我希望我的自定义异常消息有

  • 我读过这段代码,其中接口抛出异常,但实现它的类没有抛出异常或捕获异常,这是为什么?它在java中是合法的还是安全的?