I didn't figure it out how to user spring2.5 based on the links:
http://www.tutorialspoint.com/spring/spring_exception_handling_example.htm
http://www.mkyong.com/spring-mvc/spring-mvc-exception-handling-example/
Then I user @ExceptionHandler annotation to do that, it also very easy and convenient.
1. Write your own exception class
public class MyTwitterException extends Exception { private static final long serialVersionUID = -6436439497152731976L; private String exceptionMsg; public MyTwitterException(String exceptionMsg) { this.exceptionMsg = exceptionMsg; } public String getExceptionMsg() { return this.exceptionMsg; } public void setExceptionMsg(String exceptionMsg) { this.exceptionMsg = exceptionMsg; } }
2. Config handler method( I do it in my controller class)
@RequestMapping("VIEW") @Controller public class TwitterPortlet { private static Logger logger = Logger.getLogger(TwitterPortlet.class); @Autowired @Qualifier("twitterTweetManager") private ITweetManager tweetManager; @RenderMapping public String doView(RenderRequest renderRequest, RenderResponse renderResponse) throws Exception { throw new MyTwitterException("PortalException"); } /** * Here is to handle All Exception. * @param exception * @return */ @ExceptionHandler(Exception.class) public String handleTwitterException(Exception exception) { return "error"; } }
<h2>No Tweets available now!</h2>you also can pass message into the page to display.
Even though we don't create MyTwitterException, it still works, because we handle all exception.
-----------------------------------------------------------------------------------------------------------------------------------------------
Last week, I learned another way to handle exception
First, we need to create a class implements HandlerExceptionResolver, Ordered
import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import org.springframework.core.Ordered; import org.springframework.web.portlet.HandlerExceptionResolver; import org.springframework.web.portlet.ModelAndView; public class MyExceptionResolver implements HandlerExceptionResolver, Ordered { private int order; public void setOrder(int order) { this.order = order; } @Override public int getOrder() { // TODO Auto-generated method stub return order; } @Override public ModelAndView resolveException(RenderRequest arg0, RenderResponse arg1, Object arg2, Exception arg3) { // TODO Auto-generated method stub return new ModelAndView("error"); } @Override public ModelAndView resolveException(ResourceRequest arg0, ResourceResponse arg1, Object arg2, Exception arg3) { // TODO Auto-generated method stub return new ModelAndView("error"); } }
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.RuntimeException">common/error</prop> </props> </property> <property name="order" value="1" /> </bean> <bean class="com.rujuan.exception.MyExceptionResolver"> <property name="order" value="0" /> </bean>