GGG

プログラミング言語やソフトウェア開発について思ったことを書いてます

必ず例外を吐く仕様

C#

Page.Response.End()を呼ぶと必ず例外を吐く仕様らしい。

 

最近、  (VS2012)C#ASP.NET + SQL Server 2012 で仕事をする機会があったのですが上記の内容でずいぶん悩んだがググったら仕様(バグ?)だと分かった。

 

保守・調査目的だったので、すでにあるコードをブレークポイント+ステップ実行で動作を確認した。

 

なぜか毎回例外を吐く。

下記URLでの説明内容と同じようにThreadAbortExceptionを捕捉して何もしないようにコードが書かれていた。

しかしコメントもなく、保守資料に何も書いてなった。

そして、上記メソッドを呼ぶいたるところで同じコードが書かれている・・・。

try { Page.Response.End();  } catch(ThreadAbortException) { /* Do Nothing */ } catch(Exception ex) { /* 例外 */ }

 

これはハマるよ。

 

blog.jhashimoto.net