Вопрос: Мы можем закомментировать sleep? — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Вопрос: Мы можем закомментировать sleep?

2022-10-10 39
Вопрос: Мы можем закомментировать sleep? 0.00 из 5.00 0 оценок
Заказать работу

Ответ: Нет. После того как мы закомментируем sleep, Java сразу же задаст вопрос, а зачем тогда тебе InterruptedExceptionв блоке catch? Можешь мне пояснить? А убирать блок try-catchтоже нельзя. Т.к. данные блоки потребуются при синхронизации. В общем выглядит это как-то не очень красиво. Я не хочу писать sleep, тогда мне говорят убери блок try-catch. В общем здесь есть одна хитрая система, как эту проблему решить.

Видите, как получается? У нас в любом случае есть в методе run, чаще всего придется обрабатывать исключение InterruptedException. И у нас там уже будет какая-то бизнес-логика. Может быть мы будем писать какие-то логи и если нас попросят остановиться, то нужно будет также написать какой-то лог. С другой стороны проблемы здесь нет, ну и что, что исключение.

Вопрос: Что происходит, когда в главном потоке происходит необработанное исключение?

Ответ: Программа завершается.

Вопрос: Что произойдет, если этот дополнительный поток завершится с исключением, который вы не обрабатываете?

Ответ: Возьмите на 0 разделите. Будет исключение? Да. Потокзавершится? Да. Выобэтомузнаете? Нет. Т.е. может произойти необработанное исключение и тоже хотелось бы быть в курсе, что они происходят, потому что если поток работал, и вдруг пропал… Почему? Агдеданные? А что случилось с ним?

end of main Name = Thread-0, i = 0 Name = Thread-1, i = 0 Name = Thread-1, i = 1 Name = Thread-1, i = 2 Exception in thread "Thread-0" java.lang.ArithmeticException: / by zero Name = Thread-1, i = 3 Name = Thread-1, i = 4 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

Ну это NetBeansтакой умный. Но программа-то доработала, видите? Это где-то NetBeansу себя ловушку поставил. А если у вас будет обычная система? В этой ситуации вам придется как-то думать как выкрутиться? Все уже сделано, и нужно только знать куда залезть.

Метод setUncaughtException добавили только в версии 1.5. Они тоже думали, надо ли перехватывать вам необработанные исключения? Потом все-таки решили, что надо. Вот то, что вы в качестве параметра укажете вызывается когда поток завершается в результате появления необработанного исключения. Т.е. вы можете задать для потока обработчик на необработанное исключение с которым он завершается. Если задать в качестве параметра null, то это значит, что вообще мы не ловим необрабатываемых исключений. Просто чтобы вы понимали. Надо логировать необработанные исключения (а у вас потоков может допускаться сколько угодно). Возьмите один обработчик и каждому будете говорить. Он будет один для всех потоков он будет перехватывать и логировать все необработанные исключения. Все это продумано, потому что вопрос здесь действительно возникает, а как поймать другие исключения? Вот я вам это показал.

Идем дальше…


Поделиться с друзьями:

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.