|
2007/05/22(Tue) 10:29:16 編集(投稿者) 2007/05/22(Tue) 10:29:04 編集(投稿者)
中博様 ご教授ありがとうございました。
いただきました内容を以下のように解釈しました。 ・ユーザーに関係のないシステム情報はシステム内部で処理して表示しない。 ・サーバの例外情報の詳細はサーバで処理し、クライアントには 例外が発生したという概要のみを通知する。
私は .NET の初心者ですが、Java との例外の違いがわかった ような気がします。 .NET での例外とは、あくまでも例外 (ユースケースでいう例外フロー) であり、 ユースケースでいう代替フローには使用しないということですね (表現が下手ですみません)。
補足ですが、以下のようなコードを考えていました。 (1) 例外による代替フロー (クライアント側) ※Java 風 // Web サービスインスタンスを構築します UserWebService userService = new UserWebService(); try { // 登録用ユーザー情報を入力フィールドより構築します User user = new User(); user.UserCode = userCodeTextBox.Text; // ユーザー情報の登録を実施します // 戻り値は、ユーザー ID (シーケンス) を付与したユーザー情報です。 User registeredUser = userService.RegisterUser(user); } catch (DuplicateUserCodeException ex) // SoapException でこのようなことをする予定 { // 代替フロー: ユーザーの入力したコードが重複している MessageBox.Show("指定されたユーザーコードはすでに使用されています。"); userCodeTextBox.Focus(); return; } (2) 戻り値による代替フロー(クライアント側) // Web サービスインスタンスを構築します UserWebService userService = new UserWebService(); // 登録用ユーザー情報を入力フィールドより構築します User user = new User(); user.UserCode = userCodeTextBox.Text; // ユーザー情報の登録を実施します UserRegistrationResults results = userService.RegisterUser(user); if (ErrorCodes.DuplicateUserCode == results.ResultCode) { // 代替フロー: ユーザーの入力したコードが重複している MessageBox.Show("指定されたユーザーコードはすでに使用されています。"); userCodeTextBox.Focus(); return; } // ユーザー ID (シーケンス) を付与したユーザー情報です。 User registeredUser = results.RegisteredUser;
(2) の方が .NET では正攻法ということですよね?
長文になりましたがよろしくお願いいたします。
|