当我尝试在控制器方法中捕获异常时,我无法捕获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”行抛出,因为客户端意外关闭了连接。然而,这个异常没有被捕获,控制台收到标准异常显示......
我做错了吗?
答案 0 :(得分:4)
我认为如果引发异常的方法没有显式抛出异常(签名中有抛出),它将被抛出为 UndeclaredThrowableException 。然后你的catch中的类型与它不匹配。尝试捕获SocketException。或者,如果您可以使用catch(all)
捕获它们。
哦,看看this。