2017-10-11 5 views
-1

文字列をIntegerに変換しているため、文字を受け取ったときに例外がスローされ、実行が停止しています。私はその文字をスキップし、残りの数字をすべて印刷するので、whileループの中にキャッチしたかった。しかし、それぞれの例外ごとに1つのエラーがスローされ、残りの数字は例外ごとに印刷されますが、例外がスローされるとコードはチームにメールを送信しなければなりません(私はキャッチの内側にメール部を配置します)。例外がスローされるたびにコードがメールを送信すると、ループ内ですべての例外を収集し、すべての例外に関して一度にメールを送信する必要があります。出来ますか?ループ中にキャッチ

私は単純なサンプルコードを配置します。

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つのメールを送り、すべてのメッセージが含まれています... –

+1

最初にソースコードをフォーマットできますか?読むのは少し難しいです。 – LHCHIN

答えて

0

(私は後で一度にすべての例外と印刷を収集するために私のロジックを教えてください。のように処理するメーリングリスト部分が)、それを収集するExceptionオブジェクトとListクラスを宣言します。

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()); 
      } 
     } 
    } 
} 
0

あなたは私は考えだけで完全にの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); 
    } 
} 
関連する問題