我正在爲asp.net mvc項目編寫一個類庫。類庫將返回實體並執行基本功能。在以前的項目中,我用這樣的邏輯:返回錯誤消息vs拋出異常
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。
我不知道這是否是一種好的做法。
在此先感謝。
非常感謝nvoigt和@darin的快速反應。你認爲與項目規則有關的錯誤是否例外?例如, throw UserCannotBeYoungerThan18(「」); 不好? 我應該像「處理可以處理的每一個問題」這樣的座右銘嗎? – aldebaran