如何解决for循环中的InvocationTargetException? (寻找整个堆栈跟踪)

How to solve InvocationTargetException in for loop? (seeking entire stack trace)

目前,我的工作遇到了问题。


List<Map<String,String>> tmp = //blahblahblah//(for my privacy)
        int size = tmp.size();
        String[] linearr = new String[size];
        String[] numarr= new String[size];
        String[] namearr= new String[size];
        String[] datearr= new String[size];
        int i = 0;

for (i = 0; i < size; i++) {
    linearr[i] = (String) tmp.get(i).get("line").toString();
    numarr[i] = (String) tmp.get(i).get("number").toString();
    namearr[i] = (String) tmp.get(i).get("name").toString();
    datearr[i] = (String) tmp.get(i).get("date").toString();
            }

我做了一个 List<Map<String,String>> 但是当我进入 for 循环时。 InvocationTargetException 上来了。 而且我无法再调试并且无法跟踪它

我用 throws InvocationTargetException e 尝试了用 try 和 catch 块包围的代码 但是 Eclipse 告诉我删除它。

请帮忙

具体是说invocationtargetexception.<init>(throwable) line: not available

您可能会发现此 link 有帮助。但是,我想建议您需要确保您的地图中的所有键都可用。

P.S。您不需要使用 toString()(String) 转换。

您不想使用列表?如果您在 map 中没有确切的键,它将抛出 Exception 。使用 get 或 default 将阻止它。

List<String> line = new ArrayList<>();
        List<String> number = new ArrayList<>();
        List<String> name = new ArrayList<>();
        List<String> date = new ArrayList<>();
        for(Map<String, String> map:tmp){
           line.add(map.getOrDefault("line",""));
           number.add(map.getOrDefault("number",""));
           name.add(map.getOrDefault("name",""));
           date.add(map.getOrDefault("date",""));
    }