如何将HttpError转换为Exception类型?

时间:2013-09-26 17:14:46

标签: c# .net

是否有一种简单的方法可以将\ cast HttpError转换为Exception

我正在考虑利用反射来基于HttpError.Message的内容来实例化异常 - 这是完成我想要做的事情的最佳方式吗?

3 个答案:

答案 0 :(得分:4)

您可以随时制作自己的自定义异常,并使用HttpError.Message属性来获取合理的消息:

throw new YourHttpException(httpError.Message);

包括HttpError也可能是有益的,因为它是一个潜在错误的完整字典。

答案 1 :(得分:4)

您无法将HttpError转换/转换为Exception。相反,您可以使用HttpError.Message创建新的例外(或您自己的自定义例外)

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 Copseyanswer中说明。

答案 2 :(得分:1)

这反映出非常简单,你会丢失一些元素,包括堆栈跟踪。

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