Spring - 如何处理异常

时间:2010-10-13 17:25:11

标签: spring velocity

我正在使用Spring with Velocity。有时速度产生例外

  

插入字符串文字时出错:org.apache.velocity.exception.MethodInvocationException:在类org.springframework.web.servlet.support.RequestContext中调用方法'getMessage'抛出异常类org.springframework.context.NoSuchMessageException:否在代码'XX'下找到的有关区域设置'en_US'的消息。

问题是 - 我可以指示春天压制NoSuchMessageException吗?我是Spring的新手,所以不知道我是否可以创建一个异常处理程序,如果找不到该消息,它将不会抛出异常?在我的用例中,它是一个有效的用例,没有在messages.properties文件中找到一些消息。

[编辑] - 我找到了一种方法org.apache.velocity.app.event.MethodExceptionEventHandler为速度提供偶数处理程序。但我不知道如何用Spring注册它。

1 个答案:

答案 0 :(得分:2)

我认为,最好直接解决问题,而不是试图压制异常,这可能会导致避免行为和未完成的操作。

但是,在没有为给定代码定义消息的情况下,您没有告诉我们您希望系统如何响应。您想要一个空白字符串,还是代码本身应该用作默认消息?

我假设您在Spring上下文中的某个地方有一个已定义的某种messageSource bean。这些MessageSource bean通常具有属性useCodeAsDefaultMessage。默认为false,但设置为true时,如果没有定义消息,它们将返回代码本身作为消息。

或者,您可以继承MessageSource类(无论您使用哪个类),并覆盖getDefaultMessage()方法以处理无法解析代码的情况。