[英]Java: InvocationTargetException
我在Java中動態創建類並嘗試調用它們中的方法,但是,有時我會得到一個java.lang.reflect.InvocationTargetException
。
PageGenerator1.java(動態創建)
import java.io.PrintStream;
import java.util.Map;
public class PageGenerator1 implements DynamicPageGenerator {
public PageGenerator1() {
}
@Override
public void generate(PrintStream out, Map<String,String> params, Session session) {
out.print("<html>\r\n<body>\r\n");
if (session.get("counter") == null) {
session.set("counter", 2);
out.println("<h1>Hi "+params.get("name")+" this is your first visit</h1>");
} else {
out.println("<h1>This is your "+session.get("counter")+" visit</h1>");
session.set("counter", 1+((Integer)session.get("counter")));
}
out.print("\r\n</body>\r\n</html>");
}
}
我試圖像這樣調用它:
logger.info(
"Attempting to invoke the method " + generateMethod + " with an instance of " + generatedClassName + "with the following parameters:\n" +
"\tparams: " + params + "\n" +
"\tcookieSession: " + cookiesSession
);
generateMethod.invoke(Class.forName(generatedClassName).newInstance(), ps, params, cookiesSession);
這是我得到的日志條目:
信息:試圖調用該方法
public void cs236369.webserver.requesthandlers.tsp.PageGenerator1.generate(java.io.PrintStream,java.util.Map,cs236369.webserver.requesthandlers.tsp.Session)
用一個實例
cs236369.webserver.requesthandlers.tsp.PageGenerator1
使用以下參數:
參數:{name=Amir}
cookieSession:{counter=5}
我得到的例外沒有消息,我沒有反思等經驗,所以我不確定錯誤是什么意思。 你能幫我解釋一下我做錯了什么嗎?
InovcationTargetException意味着您調用的方法引發了異常。 要弄清楚方法本身存在什么問題,請圍繞try-catch塊包裝invoke方法調用並記錄invocationTargetException.getTargetException()
。
我可以在generateMethod中看到你可能有錯誤的幾個地方。 Session可以為null,session.getCounter()被強制轉換為Integer - 那里可能有classcastexception。
可能是因為參數錯誤。 首先,檢查您的參數。 使用e.getCause()。getCause()來獲取此背后的實際原因。
在調用代碼和生成塊中放置try catch塊。 此外,您還可以在調試器中逐步執行這些方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.