簡體   English   中英

如何將HttpError轉換為Exception類型?

[英]How can I convert an HttpError into an Exception type?

有沒有一種簡單的方法將\\ cast HttpError轉換為Exception

我正在考慮利用反射來實例化基於HttpError.Message內容的HttpError.Message - 這是完成我想要做的事情的最佳方式嗎?

您可以隨時創建自己的自定義異常,並使用HttpError.Message屬性來獲取合理的消息:

throw new YourHttpException(httpError.Message);

包括HttpError也可能是有益的,因為它是潛在錯誤的完整字典。

您無法將HttpError轉換/轉換為Exception 相反,您可以使用HttpError.Message創建一個新的Exception (或您自己的自定義異常)

throw new Exception(HttpErrorObject.Message);

編輯:如果你想要自己的自定義異常,那么你可以創建一個類,如:

class MyHttpException : Exception
{
    public HttpError HttpErrorObject { get; set; }
    public MyHttpException(string Message, HttpError ErrorObject)
        : base(Message)
    {
        this.HttpErrorObject = ErrorObject;
    }
}

然后你可以使用它像:

HttpError httpErrorObject = new HttpError("404");
throw new MyHttpException(httpErrorObject.Message, httpErrorObject);

包括原始的錯誤對象,正如@Reed Copsey在他的回答中所說的那樣

事實證明,使用反射非常簡單,但是你會丟失一些元素,包括堆棧跟蹤。

Type exceptionType = Type.GetType(httpError["ExceptionType"].ToString());
ConstructorInfo exceptionConstructor = exceptionType.GetConstructor(new[] { typeof(string) });
throw (Exception)exceptionConstructor.Invoke(new object[] { httpError["ExceptionMessage"] });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM