2

当我尝试在控制器方法中捕获异常时,我无法捕获 SocketException。控制器动作如下所示:

def updateDeviceStartV1() {
      try {
         ...
         response.status = 200;
         response.setContentType("application/octet-stream")
         response.outputStream << responseService.encryptedResponse // byte[]
      }
      catch(Exception e) {
         log.error "Server faced unexpected exception", e
         response.status = 500;
         ...
      }

SocketException 由“response.outputStream << responseService.encryptedResponse”行抛出,因为客户端意外关闭了连接。然而,这个异常并没有被捕获,控制台接收到标准的异常显示......

难道我做错了什么?

4

1 回答 1

4

我认为如果引发异常的方法没有显式抛出异常(在签名中带有 throws ),它将作为UndeclaredThrowableException抛出。然后你的 catch 中的类型与它不匹配。尝试捕获 SocketException。或者,如果您可以使用catch(all). 哦,看看这个

于 2012-09-13T17:04:00.533 回答