我正在为asp.net mvc项目编写一个类库。类库将返回实体并执行基本功能。在之前的项目中,我使用了这样的逻辑:
public class MyClassLibrary
{
public Response<ResponseMessage, MyEntity> GetMyEntity()
{
//Some code
}
public ResponseMessage SaveMyEntity(MyEntity e)
{
//Some code
}
}
public class BaseController:Controller
{
public ActionResult JsonDataSourceRequest<T>(Func<Response<ResponseMessage, List<T>>> operation, [DataSourceRequest] DataSourceRequest request)
{
try
{
Response<ResponseMessage, List<T>> ret = operation();
if (ret.message.type == ReturnType.OK)
{
return Json(ret.result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
else
return ConvertToJson(ret.message);
}
catch (Exception ex)
{
ResponseMessage m = new ResponseMessage();
m.type = ReturnType.ERROR;
m.text = ex.text;
return ConvertToJson(m);
}
}
public ActionResult PartialView<T>(Func<Response<ResponseMessage, T>> operation)
{
//Some code
}
public ActionResult Action(Func<ResponseMessage> operation)
{
//some code
}
}
[CustomAuthorize]
public class MyController : BaseController
{
public ActionResult MyEntityRead([DataSourceRequest] DataSourceRequest request)
{
return base.JsonDataSourceRequest(() =>
{
return MyEntityService.GetAll();
}, request);
}
}
这里为了使用BaseController的功能,我总是回来 响应 要么 ResponseMessage
现在我认为我可以拥有自定义异常类,而不是从我可以抛出这些异常的所有方法返回ResponseMessage。
我想知道这是不是一个好习惯。
提前致谢。
答案 0 :(得分:6)
如果有特殊情况,你应该抛出异常。如果某些事情是预期的情况,则应使用返回值。只有你知道哪种情况适用于你的情况。
答案 1 :(得分:4)
我想知道这是不是好习惯。
不,抛出异常来处理非异常流程是糟糕的设计。抛出异常是有代价的,如果你能用正常的流量处理你的情况,你应该避免它们。
答案 2 :(得分:1)
“引发异常,而不返回错误代码
异常确保不会因调用代码未检查返回代码而引起失败。”
https://docs.microsoft.com/en-us/dotnet/standard/exceptions/best-practices-for-exceptions