Grails Controller - 无法捕获SocketException

时间:2012-09-13 16:31:18

标签: grails exception-handling grails-2.0

当我尝试在控制器方法中捕获异常时,我无法捕获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&lt;&lt; responseService.encryptedResponse”行抛出,因为客户端意外关闭了连接。然而,这个异常没有被捕获,控制台收到标准异常显示......

我做错了吗?

1 个答案:

答案 0 :(得分:4)

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