powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Try catch
25 сообщений из 28, страница 1 из 2
Try catch
    #39603068
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
public class Main {

  public static void main(String[] args) {
    System.out.println("Hello World!");
    try {
      methodA();
    } catch (TestException e) {
      System.err.println("methodA = " + e.getMessage());
    }
    try {
      methodB();
    } catch (TestException e) {
      System.err.println("methodB = " + e.getMessage());
    }
    try {
      methodC();
    } catch (TestException e) {
      System.err.println("methodC = " + e.getMessage());
    }
    System.out.println("Hello World!");
  }

  private static void methodA() throws TestException {
    try {
      System.out.println("methodA Start");
      System.out.println(15 / 3);
      System.out.println("methodA End");
    } catch (RuntimeException re) {
      throw new TestException(re.getMessage(), re);
    }
  }

  private static void methodB() throws TestException {
    try {
      System.out.println("methodB Start");
      System.out.println(15 / 0);
      System.out.println("methodB End");
    } catch (RuntimeException re) {
      throw new TestException(re.getMessage(), re);
    }
  }

  private static void methodC() throws TestException {
    try {
      System.out.println("methodC Start");
      System.out.println(15 / 10);
      System.out.println("methodC End");
    } catch (RuntimeException re) {
      throw new TestException(re.getMessage(), re);
    }
  }

}

public class TestException extends RuntimeException {

  public TestException(String message, Throwable cause) {
    super(message, cause);
  }


}



Мне надо , что б выполнились все methodA, methodB, methodC
Вне зависимости от ошибок

Можно ли избавить от try-catch? Или хотя б уменьшить их
...
Рейтинг: 0 / 0
Try catch
    #39603086
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

finaly ?
...
Рейтинг: 0 / 0
Try catch
    #39603087
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лямды наше всё. Из методов A,B,C исключения убираете совсем. Оставляете только логику - то для чего именно метод был создан.
Делаете единственный метод с обработкой исключений, который принимает Callable, Function или другой нужный вам Single Method Interface. В результате main() сводится к:

Код: java
1.
2.
3.
4.
 
runAndCatch(Main::methodA);
runAndCatch(Main::methodB);
runAndCatch(Main::methodV);
...
Рейтинг: 0 / 0
Try catch
    #39603096
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Мне надо , что б выполнились все methodA, methodB, methodC
Вне зависимости от ошибок
Странный вопрос.
Исключния для прерывания потока выполнения.
А ты требуешь обратного?
Гаси их в методах.
Иначе Г.код.
...
Рейтинг: 0 / 0
Try catch
    #39603135
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public static void main(String[] args) throws Exception {
    System.out.println("Hello World!");
    methodRunner(() -> methodA(), () -> methodB(), () -> methodC());
    System.out.println("Hello World!");
}

public static void methodRunner(Runnable...runnables) {
    for (Runnable runnable: runnables) {
        try {
            runnable.run();
        } catch (Throwable t) {
            t.printStackTrace(System.out);
        }
    }
}
...
Рейтинг: 0 / 0
Try catch
    #39603143
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
Погасить засунув в поток?)
...
Рейтинг: 0 / 0
Try catch
    #39603157
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Все выполняется в основном потоке, просто заюзал интерфейс Runnable...
...
Рейтинг: 0 / 0
Try catch
    #39603181
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanPetro123,

Все выполняется в основном потоке, просто заюзал интерфейс Runnable...не знал.
...
Рейтинг: 0 / 0
Try catch
    #39604415
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman
Код: java
1.
2.
3.
4.
5.
        try {
            runnable.run();
        } catch (Throwable t) {
            t.printStackTrace(System.out);
        }

Не надо так, ловля Throwable - это очень неправильно. Прилетит OutOfMemoryError, и как эта конструкция его обрабатывать будет?
...
Рейтинг: 0 / 0
Try catch
    #39604429
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗашедшийПрилетит OutOfMemoryError, и как эта конструкция его обрабатывать будет?-=Koba=-Мне надо , что б выполнились все methodA, methodB, methodC
Вне зависимости от ошибок
...
Рейтинг: 0 / 0
Try catch
    #39606835
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я под ошибками имел ввиду
NPE, сохранение в БД итд
...
Рейтинг: 0 / 0
Try catch
    #39606879
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Я под ошибками имел ввиду
NPE, сохранение в БД итдну глупая же постановка. Самому писать try и самому плевать на try.
...
Рейтинг: 0 / 0
Try catch
    #39606904
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Самому писать try и самому плевать на try.Если требуется подавить исключение - совершенно нормально.
Требуется или не требуется - вопрос совершенно отдельный.
...
Рейтинг: 0 / 0
Try catch
    #39606947
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код который выполняет цепочку методов и игнорит исключения - совершенно нормален. Особенно
если речь идет о финализации какого-то процесса. Закрываем соединения с БД и закрываем файлы.
В этот момент нам пофиг что будет внутри.

Но я-бы переделал methodA, *B, *C на интерфейс не бросающий исключения.
...
Рейтинг: 0 / 0
Try catch
    #39606949
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНо я-бы переделал methodA, *B, *C
и я как бы о том же.
Вот этот вопрос чисто про архитектуру:
-=Koba=-Можно ли избавить от try-catch? Или хотя б уменьшить их
Переписать код и он станет меньше.
...
Рейтинг: 0 / 0
Try catch
    #39606957
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНо я-бы переделал methodA, *B, *C на интерфейс не бросающий исключения.
когнитивный шок
Код: java
1.
2.
3.
4.
5.
6.
7.
protected void process(тип1 парам1, тип2 парам2) {
  толькоЗдесь(тип1 парам1, тип2 парам2);
}
private void толькоЗдесь(тип1 парам1, тип2 парам2) {
  // увеличиваем глубину стека вызовов,
  // делая реальную работу
}

Вот зачем эта обёртка? Чтобы было?
Или чтобы читатель кода гадал о причинах столь глубокомысленного решения?

Есть более-менее стандартное API ...
Зачем обязательно прятать это API в то, что нужно "здесь и сейчас" и больше нафиг не нужно???
...
Рейтинг: 0 / 0
Try catch
    #39606963
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНо я-бы
я бы не писал
Код: java
1.
throw new

, если исключение не нужно наверху.
Остальное гадание на кофейной гуще.
...
Рейтинг: 0 / 0
Try catch
    #39607054
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Apache IOUtils есть семейство функций closeQuietly(..). После появления семерки их помаркировали как @Deprecated
и советуют использовать try-with-resources. Этот кейс очень похож на проблему с которой воюет автор. Ну.. по крайней
мере если автор закрывает ресурсы то ему стоит подумать о AutoCloseable.
...
Рейтинг: 0 / 0
Try catch
    #39607377
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть проблемы
что идут подряд пять метдов

И в последнем идет сохранение информации, и вот если что-то свалилось, то сохранение в БД не происходит
...
Рейтинг: 0 / 0
Try catch
    #39607403
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Суть проблемы
что идут подряд пять метдовубирай райзе из методов.
Неделю не можешь внятно задачу описать.
...
Рейтинг: 0 / 0
Try catch
    #39607405
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-вот если что-то свалилось, то сохранение в БД не происходит
Try
....
Finally
Сохранили в бд
...
Рейтинг: 0 / 0
Try catch
    #39607681
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это понятно

Method 1
Method 2
Method 3
Method 4
SaveToDB

Если через finally, что SaveToDB будет всегда, а остальные методы?
...
Рейтинг: 0 / 0
Try catch
    #39607696
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Если через finally, что SaveToDB будет всегда, а остальные методы?Вы прям как маленький ...
Если методы кидают исключения и требуется специфичная обработка для каждого - будет тихий ужас из вложенных try-catch-finally.
Если специфичная обработка не требуется, то делаем обёртку, подавляющую исключения и, возможно, протоколирующую некоторое сообщение.

Запоминаем, что обработчик, делающий печать стека исключений - никуда негодная фигня и отвыкаем от этой гадости.
...
Рейтинг: 0 / 0
Try catch
    #39607700
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю, что сейчас данное решение написано на коленях, переделаю

Просто вопрос стал как избавиться, от try - catch
Подсказали сделать, через лямбы.

Ок сделал уже давно
...
Рейтинг: 0 / 0
Try catch
    #39607706
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Method 1
Method 2
Method 3
Method 4
SaveToDBДостаточно пометить основной метод (в котором выполняется вся эта цепочка) аннотацией @Transactional и транзакция автоматически откатится при возникновении исключения.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Try catch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]