Я думаю, что самоанализ трассировки стека для обработки ошибок позже очень сильно повредит вам. Если вам нужны отдельные действия для отдельных строк, поместите их в отдельные блоки try-catch.
Возможно, вы просто захотите иметь простое состояние хранения переменных, чтобы вы могли проверить значение и определить, как далеко вы продвинулись. Я думаю, что это будет работать намного лучше.
int state = 0;
try {
step1();
state = 1;
step2();
state = 2;
....
} catch (Exception e) {
if (state == 2) ....
}
Редактировать: Downvoters, пожалуйста, обратите внимание, я начал говорить, что это плохая идея; -)