在Web服務和ASP.NET Web API發生異常返回JSON響應異常,像下面:重新創建是在JSON序列化反應異常
HTTP/1.1 500 Internal Server Error
Content-Type: application/json; charset=utf-8
{ "Message":"An error has occurred.",
"ExceptionMessage":"Incorrect syntax near 'FooBar'.",
"ExceptionType":"System.Data.SqlClient.SqlException",
"StackTrace":"at System.Web.Http.ApiController.blah.blah.blah" }
我想重新例外,在客戶端。我想將響應轉換爲一個SqlException對象(在下面的例子中),然後拋出異常。有些博客提到使用Activator.CreateInstance()和Type.GetType()在運行時創建一個對象,字符串中的類型名稱,有些提到了動態的使用。但是,我無法確定如何正確使用它。如果有人能教育我,我將不勝感激。謝謝!
public class ExceptionResponse
{
public string Message { get; set; }
public string ExceptionType { get; set; }
public string ExceptionMessage { get; set; }
public string StackTrace { get; set; }
}
ExceptionResponse response = httpContent.ReadAsAsync<ExceptionResponse>().Result;
Type exceptionType = Type.GetType(response.ExceptionType);
throw Activator.CreateInstance(exceptionType, new object[]);
// Visual Studio indicates error: The type caught or throw must be derived from System.Exception
如何將變量e從類型ExceptionResponse更改爲類型SqlException?在我的程序中,我有一個catch塊來查找SqlException。 – Tony
你可以明確地施放它。因爲SqlException是Exception的派生類。嘗試檢查此:http://social.msdn.microsoft.com/Forums/vstudio/en-US/bdaeb0c6-1d9d-44c2-92c7-6cdda411a5e7/exception-casting-to-sqlexception?forum=csharpgeneral – 2014-02-17 05:23:11
例外可以是JSON響應中指定的任何類型。例如,它可能是NotImplementedException或IOException。我如何在運行時投射物體? – Tony