Мне трудно понять, как должны распространяться исключения.Мой код (очень похожий на общий код ниже) выполняет otherCode()
и не может continue outer
, когда doSomething()
выдает исключение.Мне нужно зациклить анализ группы файлов, некоторые из которых могут быть отформатированы неправильно (вызывая исключение), а затем зациклить проанализированные данные, что также может привести к исключению (например, файл имел правильный формат, но отсутствует поле),Когда возникают эти исключения, циклы должны продолжаться на остальных полях / файлах.
Мои вопросы о путанице / неопределенности обозначены вопросами в комментариях ниже (через?).
...
public static void main(string[] args) {
outer: while ( thingsToDo ) {
try{
someItrType someIterable = doSomething(); // might throw
otherCode(); // only do this if nothing was thrown above?
} catch (SomeExceptionType e) {
handleSomeExceptionType();
continue outer; // keep trying the rest of the loop?
}
otherOtherCode(): // only if nothing thrown, because of the continue?
inner: while( someIterable.next() ) {
try{
doSomethingElse(); // might throw
} catch (SomeExceptionType e) {
handleSomeExceptionType();
continue inner; // keep trying the inner loop?
}
doThisIfAllOkay(); // only if no exceptions thrown?
}
}
}
Я также не понимаю распространение через вложенные вызовы, например, если doSomething()
вызывает nextMethod()
, что, в свою очередь, вызывает nextNextMethod()
и любое из этих исключений выброса, когда выполнение поймает в этих методах по сравнению с попыткойблокировать вокруг doSomething()
?Например, если эти методы throw new
содержат try-catch или не имеют обработки ...