我正在将字符串转换为Integer,所以当我收到任何字符时,抛出异常并且执行停止。我想跳过那个字符并打印所有剩余的数字,所以我一直抓住while循环。但是现在对于每个例外都会抛出一个错误,剩下的数字会按照异常进行打印,但是一旦抛出异常,代码就必须向团队发送邮件(我会将邮件部分放在catch中)。如果代码在每次抛出异常时发送邮件都不好,所以我必须收集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());
}
}
}
}
答案 0 :(得分: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());
}
}
}
}
答案 1 :(得分: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);
}
}