Spring 模型/控制器MVC中的异常处理
我最近刚刚开始学习MVC模式,最初是在android中,但现在是在SpringMVC框架中。我想知道在模型或控制器中进行测试/异常处理是否更合适。我的意思是,假设我在模型中有一个字段,它应该被限制为一些值,或者一系列值;我应该测试输入并在模型中抛出异常,让控制器捕捉它们,还是在将输入转发到模型之前,控制器应该自己检查输入 我担心在控制器中进行测试可能需要检查几个点的值,而如果在模型中进行测试,则只能在一个位置进行。我对检查模型中的输入的担心是,出于某种原因,这对我来说真的很奇怪;我对这个模式还是新手,所以我还不知道 什么是标准?推荐什么Spring 模型/控制器MVC中的异常处理,spring,exception,spring-mvc,model-view-controller,exception-handling,Spring,Exception,Spring Mvc,Model View Controller,Exception Handling,我最近刚刚开始学习MVC模式,最初是在android中,但现在是在SpringMVC框架中。我想知道在模型或控制器中进行测试/异常处理是否更合适。我的意思是,假设我在模型中有一个字段,它应该被限制为一些值,或者一系列值;我应该测试输入并在模型中抛出异常,让控制器捕捉它们,还是在将输入转发到模型之前,控制器应该自己检查输入 我担心在控制器中进行测试可能需要检查几个点的值,而如果在模型中进行测试,则只能在一个位置进行。我对检查模型中的输入的担心是,出于某种原因,这对我来说真的很奇怪;我对这个模式还是
感谢大家在模型和控制器中进行测试和/或异常处理是合适的,这是最适合处理异常的
private String blammyValue;
public int getBlammyAsInt()
{
int returnValue;
try
{
returnValue = Integer.parseInt(blammyValue);
}
catch (NumberFormatException exception)
{
returnValue = -1; // some default value
}
return returnValue;
}
例如,如果要从字符串中解析数字,并在字符串不包含数字且正在模型中解析时使用默认值,则应在模型中处理numberformatexception。
我认为这是一个“预期”的例外
private String blammyValue;
public int getBlammyAsInt()
{
int returnValue;
try
{
returnValue = Integer.parseInt(blammyValue);
}
catch (NumberFormatException exception)
{
returnValue = -1; // some default value
}
return returnValue;
}
如果例外是不寻常的事情,
就像一个数据库例外,
没有合理的违约行为,
然后在控制器中捕获它是有意义的。您的意思是,如果异常类似于数据库异常,请将异常从模型重新发送到控制器??不,只是不要在模型中捕获它,让它在控制器中捕获。谢谢您的回答dwb,我还有一个问题,如果我在控制器中捕捉到异常,这意味着我必须在控制器中检测并写入日志(logget.error(“database open”,ex)),而不是在模型中,对吗?日志记录是一个有趣的问题。您应该在对应用程序有意义的地方记录异常;这可能意味着在模型中进行日志记录。如果您正在登录模型,您将捕获异常以记录它,然后(可能)将相同的异常重新发送到控制器。登录模型意味着您应该能够访问有助于清除日志消息的数据(甚至可能只是模型方法名称)。