很抱歉,如果我的标题有点令人困惑。
我的程序正在进行一些Web抓取,因此会因随机网络条件而捕获一些SocketTimeoutException。现在当捕获到SocketTimeoutException时,将跳过该特定循环,因此我将遗漏一些数据。我确信当跳过循环中的代码再次运行时,一切都会好起来的。当我正在抓取大量数据(> 100万套数字)时,我不想记录异常循环并再次手动运行它们。有没有办法在捕获异常时再次运行相同的循环?
try{
for(){
someCode
...
}
}catch(IOException){
}
答案 0 :(得分:4)
只需将try
- catch
放入循环
for () {
try {
// somecode
// ..
} catch ( IOException ioException ) {
// handle
}
}
答案 1 :(得分:2)
为什么不将异常处理放在循环中
for(){
try{
// someCode
}catch(IOException e){
//handle exception if necessary
}
}
答案 2 :(得分:1)
你必须这样做。试着抓住循环内部。
for(){
try {
someCode
...
} catch(IOException){
}
}
答案 3 :(得分:1)
我想重做相同的循环迭代:
int i = 0;
int n = 15; // your n
for (i = 0; i < n; i++) {
try {
// some code
} catch (Exception e) {
i--;
}
}
但要注意无限循环!您应该添加MAX_TRIES管理。
答案 4 :(得分:1)
这有问题,
try{
for(){
// someCode
...
}
}catch(IOException){
// Once exception happens your for() loop breaks !!!!!
}
相反,这样做......
for () {
try {
// somecode
// ..
} catch ( IOException ioException ) {
// handle(do something) here, not throwing error which will break the loop
}
}