首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Portlet重写的方法未抛出异常

Portlet重写的方法未抛出异常
EN

Stack Overflow用户
提问于 2013-06-17 22:09:43
回答 2查看 281关注 0票数 0

我正在开发一个示例portlet,它应该向我显示以管理员身份登录到luminus门户的用户,而登录的学生只能看到他们自己,并且在我的代码中不断遇到错误,所以我不确定如何解决这些问题

这是我在添加PersonException时获得的portlet代码overridden method does not thrown exception

代码语言:javascript
复制
package com.test;

import javax.portlet.GenericPortlet;
import javax.portlet.ActionRequest;
import javax.portlet.RenderRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderResponse;
import javax.portlet.PortletException;
import java.io.IOException;
import javax.portlet.PortletRequestDispatcher;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sghe.luminis.person.entity.Person;
import com.sghe.luminis.person.exception.PersonException;
import com.sghe.luminis.person.services.PersonService;
import java.util.List;
import java.io.Writer;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 * WebApplication6 Portlet Class
 * 
 *  
 */
public class WebApplication6 extends GenericPortlet   {


    public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException {

    }



   private static final Log cLog = LogFactory.getLog( WebApplication6.class );



    public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException, PersonException   {
        PortletRequestDispatcher dispatcher =
                getPortletContext().getRequestDispatcher("/WEB-INF/jsp/WebApplication6_view.jsp");
        dispatcher.include(request, response); 



             response.setContentType("text/html");  
             PersonService personService = PersonServiceFactory.instance().getPersonService();
             List<Person> persons = personService.fetchPagedPersons( "givenname", "", 10, "1" );
             cLog.debug( "We have " + persons.size() + " people." ); 


   }
}

这是我作为示例使用的/WEB-INF/jsp/WebApplication6_view.jsp代码

代码语言:javascript
复制
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "=//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="javax.portlet.*"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects />
<%PortletPreferences prefs = renderRequest.getPreferences();%> 
<%@page import="java.util.List"%>
<%@page import="com.sghe.luminis.person.entity.Person" %>
<%
    List<Person> persons = (List<Person>)renderRequest.getPortletSession().getAttribute("PERSON_LIST");
%>            

<html>
    <head>
        <meta http=equiv="Content=Type" content="text/html; charset=UTF-8"> 
        <title>JSP Page</title>

    </head>


    <body>
        <h1>Person List</h1>
        <table class="summit2" border="1 padding="2px">
            <theader>
                <th>Display Name</th>
                <th>Login Id</th>
                <th>Person Id</th>
           </theader>
        <% for (Person person: persons) {%>
            <tr>
                <td><%= person.getDisplayName() %></td>
                <td><%= person.getLoginId() %></td>
                <td><%= person.getPersonId() %></td>
            </tr>
            <% } %>
</table>


    </body>    


</html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-18 05:20:18

虽然Paul在重写和异常方面绝对是正确的,但我认为您的解决方案的设计可以进行一些改进。

为什么你一开始就想把异常抛给用户呢?我建议在您的代码中以更受控制的方式处理该异常,然后显示用户友好的错误消息。如果你只是让异常一直抛到顶部,它将看起来非常丑陋,并使你的应用程序看起来不稳定和粗糙。

票数 0
EN

Stack Overflow用户

发布于 2013-06-17 22:51:42

根据,要覆盖类的方法(8.4.8.3. Requirements in Overriding and Hiding):

更准确地说,假设B是一个类或接口,A是B的超类或超接口,B中的方法声明n覆盖或隐藏A中的方法声明m。然后:

  • If n throws有一个提到任何检查的异常类型的子句,那么必须有一个编译时错误子句或-time子句

  • For在擦除throws n**,的** throws m**;子句时,子句中列出的每个检查到的异常类型都必须出现相同的异常类或其超类型之一,否则会出现编译时错误**。

  • 如果m的unerased throws子句不包含nthrows子句中每个异常类型的超类型,则会出现编译时未检查的警告。

您可以使用未检查的异常:

代码语言:javascript
复制
public class PersonException extends RuntimeException { ... }

public class WebApplication6 extends GenericPortlet   {

    public void doView(RenderRequest request, RenderResponse response) 
         throws PortletException, IOException, PersonException  {
       ...
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17149624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档