исключение в методах высокого уровня абстракции - PullRequest
0 голосов
/ 29 мая 2011

Метод выполняет несколько задач:

public void method () {

    try {
         task1(); //may throw sql exception
         task2(); //may throw sql exception
         task3(); //may throw sql exception
   } catch (SQLException se) {
       //from which line cames the exception?
   }

Я ищу критерии для принятия в этих ситуациях.
В настоящее время моя идея заключается в следующем:
1) если мне нужно предпринять какое-либо действие в зависимости от конкретной строки, которая вызвала исключение, единственное, что нужно - это окружить каждое утверждение собственным try-catch; три в примере.
2) если мне не нужно предпринимать какое-либо конкретное действие, основанное на строке, которая выдает исключение, то трассировка стека даст достаточно информации, чтобы знать, что строка прошла неправильно, без блока try-catch для каждой инструкции, что делает код менее читаемым ,

Ответы [ 2 ]

2 голосов
/ 29 мая 2011

Трассировка стека будет содержать всю необходимую информацию.

Если вам необходимо выполнить определенные действия, то в каждом методе taskX() вы можете выдавать другое исключение, заключающее в оболочку SQLException.Хотя то же многословие.

0 голосов
/ 29 мая 2011

вы можете сохранить счетчик шагов

int step = 0;
try {
     task1(); //may throw sql exception
     step=1;//got through first
     task2(); //may throw sql exception
     step=2;
     task3(); //may throw sql exception
} catch (SQLException se) {
   //from which line cames the exception?
   if(step=0){
     //didn't get through first task
   }
   if(step=1){
     //didn't get through second task
   }
   if(step=2){
     //didn't get through third task
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...