我正在使用C#windows窗体创建一个工具,可以快速检查我们公司内部订购网站上的订单状态。我试图处理Web请求尝试打开新IE窗口时抛出的格式异常。
我的工具添加了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
我觉得托管订购网站的内部服务器抛出的异常引发的异常类型与您看到的典型异常类型不同。我读过一个" Soap"异常可能是这个被调用的但是我并不真正理解如何处理它。
我的问题是你如何处理由你的程序中没有的东西抛出的异常?
答案 0 :(得分:0)
调用服务器/网页时,您必须检查HTTP返回码。这是检查错误是否发生的唯一方法。
从我在您的代码中看到的内容,您只需打开带有输入的IE。你也可以尝试格式化服务器的输入(我想要一个长的,所以你可以检查输入是数字)
在try catch语句中包含进程start将允许您处理错误。