捕获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());
}
}
}
}
答
声明因出现异常对象列表类,然后收集。
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);
}
}
使用'List',每增加一个例外(或按摩)的微博,在循环后发送一个邮件,其中包含所有消息... –
您可以先格式化您的源代码吗?这有点难以阅读。 – LHCHIN