如何将 HttpError 转换为异常类型
本文关键字:异常 类型 转换 HttpError | 更新日期: 2023-09-27 18:33:00
有没有一种简单的方法可以将''cast HttpError
转换为Exception
?
我正在考虑利用反射来根据HttpError.Message
的内容实例化异常 - 这是完成我想做的事情的最佳方式吗?
您无法将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 Copsey在他的答案中所说的那样。
您始终可以创建自己的自定义异常,并使用 HttpError.Message 属性来获取合理的消息:
throw new YourHttpException(httpError.Message);
包括HttpError
也可能是有益的,因为它是潜在错误的整个字典。
事实证明,
这在反射中非常简单,但是您会丢失一些元素,包括堆栈跟踪。
Type exceptionType = Type.GetType(httpError["ExceptionType"].ToString());
ConstructorInfo exceptionConstructor = exceptionType.GetConstructor(new[] { typeof(string) });
throw (Exception)exceptionConstructor.Invoke(new object[] { httpError["ExceptionMessage"] });