我正在使用JScript.NET在我編寫的C#WinForms應用程序中編寫腳本。它工作得很好,但我只是嘗試在腳本中添加一些異常處理,而我無法弄清楚如何判斷我的C#代碼拋出了哪種類型的異常。JScript.NET可以區分不同的.NET異常類型
下面是一些引發兩種不同類型的CLR異常的示例JScript代碼,然後嘗試捕獲它們並將它們分開。
function ErrorTest(name)
{
try
{
if (name.length < 5)
{
throw new ArgumentException();
}else
{
throw new InvalidOperationException();
}
}catch (e)
{
return e.name + " " + (e.number & 0xFFFF) + ": " + e.message;
}
}
如果我打電話ErrorTest("foo")
,然後我回去"Error 5022: Value does not fall within the expected range."
,如果我叫ErrorTest("foobar")
,然後我回去"Error 5022: Operation is not valid due to the current state of the object."
姓名和號碼的屬性是相同的,唯一不同的是該消息。我不想根據錯誤消息開始編寫錯誤處理邏輯,那麼是否有某種方法可以獲取原始異常而不是JScript Error
對象?
謝謝,但樣品JScript代碼,所以catch語句不允許一個異常類型。我似乎被允許的是一個變量名。 – 2009-02-20 19:13:28
好點。您可以拋出新的錯誤(數字,「MessageString」)並測試數字。我認爲你可能會試圖從JScript中操縱CLR異常。 – 2009-02-20 21:48:58