2017-08-07 7 views
0

私は、会社の内部発注Webサイトに置かれた注文のステータスをすばやく確認するC#windowsフォームのツールを作成しています。新しいIEウィンドウを開くときに、Webリクエストによってスローされた書式設定例外を処理しようとしています。Webサービスを実行しているサーバによってスローされた例外の処理

My toolは8桁のユーザー入力を追加し、これをURLに追加してユーザーに特定の注文を取得し、新しいIEウィンドウを表示して表示します。私は、サーバーエラーでIEのウィンドウを取得する8桁の番号以外の情報は、(整数とは対照的に、文字列内のユーザーの種類場合など)、入力された場合

private void scRequestBtn_Click(object sender, EventArgs e) 
{  
    try 
    { 
     var scUrl = "http://iwha.mycompany.com/servicesdashboard/InstanceInfoRedirect.aspx?instance_id="; 
     var scInput = scUrl += scTextBox.Text; 
     Process.Start("IExplore.exe", scInput); 
    } 
    catch (FormatException) 
    { 
     MessageBox.Show("Your entry is not valid. Please verify the ID number"); 
    } 
} 

。次のようにスタックトレースがあります

[FormatException: Input string was not in a correct format.] Microsoft.VisualBasic.CompilerServices.Conversions.ParseDecimal(String Value, NumberFormatInfo NumberFormat) +203 Microsoft.VisualBasic.CompilerServices.Conversions.ToLong(String Value) +73

[InvalidCastException: Conversion from string "gsdfgsdfgsfg" to type 'Long' is not valid.] Microsoft.VisualBasic.CompilerServices.Conversions.ToLong(String Value) +328 ServiceDashboard_41.InstanceInfoRedirect.Page_Load(Object sender, EventArgs e) +86 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

私が注文サイトをホストしている内部サーバによってスローされた例外はあなたの典型的なものよりも、例外の異なる種類をスローすることを感じます見ることになります。私は "Soap"の例外がこれが呼ばれているかもしれないと読んだのですが、私はこれをどう扱うべきかを本当に理解していません。

私の質問は、あなたのプログラム内にないものによってスローされる例外をどうやって処理するのですか?

+0

ごみが出て、ごみが出ます。ユーザー入力をサニタイズして、入力する内容に合致していることを確認します。 – mason

答えて

0

server/webpageを呼び出すときは、HTTP戻りコードをチェックする必要があります。これは、エラーが発生したかどうかを確認する唯一の方法です。

あなたのコードで見ることができるところからは、あなたの側に入力してIEを開くだけです。サーバーの入力を書式設定することもできます(長時間入力しても数値が入力可能かどうかを確認することができます)

try catch文でプロセス開始を囲むと、エラーを処理できます。

関連する問題