捕获while while循环

问题描述:

我将字符串转换为Integer,所以当我收到任何字符时,抛出异常并且执行停止。我想跳过那个字符并打印所有剩下的数字,所以我一直在while循环中捕获。但是现在,对于每一个异常,都会抛出一个错误,其余的数字按照异常打印出来,但是一旦抛出异常,代码必须发送邮件给团队(我将把邮件部分放入catch中)。如果代码在每次抛出异常时发送邮件都不好,所以我必须收集while循环内的所有异常并一次性发送有关所有异常的邮件。可能吗?捕获while while循环

我将放置简单的示例代码。 (邮寄一部分,我稍后会处理为请告诉我收集所有的异常,并打印一次的逻辑。)

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

public class dummy { 
    public static void main(String args[]) { 
     String getEach=""; 
     List A = new ArrayList(); 
     A.add("1"); 
     A.add("2"); 
     A.add("3"); 
     A.add("AA"); 
     A.add("4"); 
     A.add("5"); 
     A.add("dsfgfdsgfdshg"); 
     A.add("30"); 
     Iterator<String> map = A.iterator(); 

     while (map.hasNext()) { 
      try { 
       getEach = map.next(); 
       int getValue = Integer.parseInt(getEach); 
       System.out.println("Value:::::: "+getValue); 
      } catch (Exception E) { 
       System.out.println("There is an exception c" +E.getMessage()); 
      } 
     } 
    } 
} 
+2

使用'List',每增加一个例外(或按摩)的微博,在循环后发送一个邮件,其中包含所有消息... –

+1

您可以先格式化您的源代码吗?这有点难以阅读。 – LHCHIN

声明因出现异常对象列表类,然后收集。

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

public class dummy { 

    public static void main(String args[]) 

    { 
     String getEach = ""; 

     List<String> A = new ArrayList<String>(); 
     A.add("1"); 
     A.add("2"); 
     A.add("3"); 
     A.add("AA"); 
     A.add("4"); 
     A.add("5"); 
     A.add("dsfgfdsgfdshg"); 
     A.add("30"); 
     Iterator<String> map = A.iterator(); 
     List<Exception> errList = new ArrayList<Exception>(); 
     while (map.hasNext()) { 
      try { 
       getEach = map.next(); 
       int getValue = Integer.parseInt(getEach); 
       System.out.println("Value:::::: " + getValue); 
      } catch (Exception E) 
      { 

       //System.out.println("There is an exception c" + E.getMessage()); 
       errList.add(E); 
      } 
     } 

     if(!errList.isEmpty()) 
     { 
      for(Iterator<Exception> eIter = errList.iterator();eIter.hasNext();) 
      { 
       Exception e = eIter.next(); 

       System.out.println("There is an exception c" + e.getMessage()); 
      } 
     } 
    } 
} 

你可以我想刚落的try/catch完全和使用这样的:

while(map.hasNext()) { 
    getEach = map.next(); 
    // If getEach contains the string representation of 
    // a Numerical value. The regular expression within 
    // the matcher below will handle signed, unsigned, 
    // integer, and double numerical values. If getEach 
    // holds a numerical value then print it. 
    if (getEach.matches("-?\\d+(\\.\\d+)?")) { 
     int getValue = Integer.parseInt(getEach); 
     System.out.println("Value:::::: "+getValue); 
    } 
}