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;
         ...
      }

クライアントが予期せず接続を閉じるため、「response.outputStream << responseService.encryptedResponse」行によって SocketException がスローされます。それにもかかわらず、この例外はキャッチされず、コンソールは標準の例外表示を受け取ります...

私は何か間違ったことをしていますか?

4

1 に答える 1

4

例外が発生したメソッドが例外を明示的にスローしない場合 (署名に throws がある場合)、UndeclaredThrowableExceptionとしてスローされると思います。次に、キャッチのタイプが一致しません。代わりに SocketException をキャッチしてみてください。または、を使用してそれらすべてをキャッチできる場合catch(all)。ああ、これを見てください。

于 2012-09-13T17:04:00.533 に答える