.NETメモ*
ASP.NETは一画面=一インスタンス(一クラス)なのだけど、Webなのでその画面から別の画面に移動する時はそのインスタンスは破棄される。
って言う事は処理プロセスが移動するんだな。
え?Mainがあるだろって?
それがあるのはサーバでしょ?それを参照してるクライアントじゃないでしょ?
で、そのプロセス移動を行おうとする時にExceptionが出るかなーってみたら、そのTryCatch文自体がプロセスキルを阻害してExceptionを発生させてしまうのですよ。
と言う事を踏まえて、ASP.NETのコーディングをするのであれば、各イベント内はイベント処理だけ行い、例外処理などはメソッドに逃がしてやる必要があるわけですよ。
それはなぜかって言うと、そのクラスは実行クラスではなくて、その周りに居る参照クラスだからですね。
# Main内に例外処理入れますか?外出ししますよね?
# しかし外出しってエロいな。失敗すると(バグが)出来ちゃうから?ゲラ。
したっけ、なんかDBとか操る処理を作るときは、DBアクセサーを作って、こいつの中でSQLExceptionを発生させて、それを画面クラス内のDBItemSetUpとかで受け取って、ここで例外処理を書く、と。
もちろんそのメソッドは「DBとのやり取りだけを考慮する」わけだから、画面の事なんて考えてはいかんのです。偉い人には(ry
ざっくりコードを書くと
private bool DBItemSetUp(string keyword) { using(DBAccess dba = new DBAccess) { dba.open(); DataTable table = dba.getData(keyword) if(table != null && table.Rows.Count > 0) { DataGrid1.DataSource = table; DataGrid1.Databind() = table; return true; } else { return false; } } }
とか言うメソッドにするですよ。
そして各イベントの方で、T/Fで分岐してやれば、Response.Redirectも、Server.Transfarも使える訳ですね。
ま、ただのメモです。