Web Api 异常处理
Web Api Exception Handling
在我的应用程序中,我正在尝试使用异常处理。我想做的是创建一个单独的 class 并将其从 HttpResponseException.
扩展
这是我写到现在的代码,
public class ApiExceptions : HttpResponseException
{
public ApiExceptions(string reason, HttpStatusCode code)
{
var response = new HttpResponseMessage
{
StatusCode = code,
ReasonPhrase = reason,
Content = new StringContent(reason)
};
throw new HttpResponseException(response);
}
}
但是我收到了这个错误,
'System.Web.Http.HttpResponseException' does not contain a constructor that takes 0 arguments
我对 C# 中的异常处理非常陌生。我真的很感激在这方面的帮助。
HttpResponseException
classhas two constructors defined,两者都需要一个值:
HttpResponseException(HttpResponseMessage)
HttpResponseException(HttpStatusCode)
因为您的 ApiExceptions
class 继承自 HttpResponseException
,它必须提供兼容的构造函数。由于 class 所做的只是 return HttpResponseException
,它似乎根本没有必要从 class 继承。
下面的代码应该可以工作
: base(...)
如果您省略对基本构造函数的调用,它将自动调用默认的基本构造函数,并且 HttpResponseException 不会没有参数。
public class ApiExceptions : HttpResponseException
{
public ApiExceptions(string reason, HttpStatusCode code):base(code)
{
var response = new HttpResponseMessage
{
StatusCode = code,
ReasonPhrase = reason,
Content = new StringContent(reason)
};
throw new HttpResponseException(response);
}
}
无论如何我不确定你为什么需要扩展 HttpResponseException
如果你想从 HttpResponseException 派生,你应该使用类似于这样的代码:在这个例子中是一个自定义异常,return BadRequest 类型异常和一个自定义消息。
public class HttpResponseBadRequestException: HttpResponseException
{
/// <summary>
/// Basic
/// </summary>
public HttpResponseBadRequestException()
: this(string.Empty)
{
}
/// <summary>
/// Specific Constructor. Use this to send a Bad request exception
/// with a custom message
/// </summary>
/// <param name="message">The message to be send in the response</param>
public HttpResponseBadRequestException(string message)
: base(new HttpResponseMessage(HttpStatusCode.BadRequest) {
Content = new StringContent(message) })
{
}
}
在我的应用程序中,我正在尝试使用异常处理。我想做的是创建一个单独的 class 并将其从 HttpResponseException.
扩展这是我写到现在的代码,
public class ApiExceptions : HttpResponseException
{
public ApiExceptions(string reason, HttpStatusCode code)
{
var response = new HttpResponseMessage
{
StatusCode = code,
ReasonPhrase = reason,
Content = new StringContent(reason)
};
throw new HttpResponseException(response);
}
}
但是我收到了这个错误,
'System.Web.Http.HttpResponseException' does not contain a constructor that takes 0 arguments
我对 C# 中的异常处理非常陌生。我真的很感激在这方面的帮助。
HttpResponseException
classhas two constructors defined,两者都需要一个值:
HttpResponseException(HttpResponseMessage)
HttpResponseException(HttpStatusCode)
因为您的 ApiExceptions
class 继承自 HttpResponseException
,它必须提供兼容的构造函数。由于 class 所做的只是 return HttpResponseException
,它似乎根本没有必要从 class 继承。
下面的代码应该可以工作
: base(...)
如果您省略对基本构造函数的调用,它将自动调用默认的基本构造函数,并且 HttpResponseException 不会没有参数。
public class ApiExceptions : HttpResponseException
{
public ApiExceptions(string reason, HttpStatusCode code):base(code)
{
var response = new HttpResponseMessage
{
StatusCode = code,
ReasonPhrase = reason,
Content = new StringContent(reason)
};
throw new HttpResponseException(response);
}
}
无论如何我不确定你为什么需要扩展 HttpResponseException
如果你想从 HttpResponseException 派生,你应该使用类似于这样的代码:在这个例子中是一个自定义异常,return BadRequest 类型异常和一个自定义消息。
public class HttpResponseBadRequestException: HttpResponseException
{
/// <summary>
/// Basic
/// </summary>
public HttpResponseBadRequestException()
: this(string.Empty)
{
}
/// <summary>
/// Specific Constructor. Use this to send a Bad request exception
/// with a custom message
/// </summary>
/// <param name="message">The message to be send in the response</param>
public HttpResponseBadRequestException(string message)
: base(new HttpResponseMessage(HttpStatusCode.BadRequest) {
Content = new StringContent(message) })
{
}
}