2017-08-07 107 views
0

我在工作中在C#窗口窗體中創建了一個工具,它可以快速檢查公司內部訂購網站中的訂單狀態。我試圖處理Web請求在嘗試打開新的IE窗口時拋出的格式異常。處理由運行web服務的服務器引發的異常

我的工具添加了8位數字的用戶輸入並將其添加到URL以獲取用戶特定的順序並打開一個新的IE窗口來顯示它。

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"); 
    } 
} 

如果輸入比8位數字等信息(例如,如果在字符串中的用戶類型,而不是整數)獲得帶有服務器錯誤IE窗口。它有一個堆棧跟蹤如下:

[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

我覺得通過舉辦訂貨網站的內部服務器拋出的異常拋出比你一個典型的一個不同類型的異常會看到。我讀過一個「肥皂」異常可能是這個稱爲,但我真的不明白如何處理這個。

我的問題是你將如何處理由不在你的程序內的東西引發的異常?

+0

垃圾進出垃圾。清理用戶輸入以確保它符合他們應該輸入的內容。 – mason

回答

0

當調用服務器/網頁時,您必須檢查HTTP返回代碼。這是您可以檢查是否發生錯誤的唯一方法。

從我在代碼中可以看到的情況來看,只有在您身邊輸入的情況下才能打開IE。您也可以嘗試格式化服務器的輸入(我想很長時間,因此您可以檢查輸入是數字)

在try catch語句中包含進程啓動將允許您處理該錯誤。