подскажите как проверить работу программы?
в методе run
пишу
throw new Error();
работает.
throw new Exception(); или throw new Throwable();
идея требует обернуть в try catch.
оборачиваю, но вывода правильного нет.
с ексепшн нашел вариант
int a = 5/0;
работает.
как вызвать trrowable?
валидацию прошел, просто не понятно как принудительно вызвать throwable
Veryprosto
35 уровень
Как вызвать throwable?
Решен
Комментарии (12)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
21 октября 2019, 18:52
Только изменив порядок наНо тут и проверять то смысла нету, в параметрах уже указано Throwable.
+1
Veryprosto
22 октября 2019, 14:57
Блин, мне хочется знать как вызвать Throwable в этой задаче. Задача решена, но есть пробел в понимании.
0
IceBergMaster
22 октября 2019, 15:41решение
Ты и так каждый раз вызываешь Throwable
это и есть Throwable
и это
Единственный способ вызывать чистый Throwable, это throw new Throwable(), но в рамках метода run() это невозможно.
+3
Veryprosto
22 октября 2019, 16:40
Вот... хотя бы такого ответа я ждал! я уже кучу вариантов перепробовал, и в интернетах обыскался!
0
АлександрExpert
21 октября 2019, 18:06
для checked исключений необходимо либо оборачивать код в try... catch, либо объявлять в методе, что он бросает это исключение.
0
Veryprosto
21 октября 2019, 18:09
я и обрачиваю, но вывода нужного не получается.
приведи пример пожста!
0
Veryprosto
21 октября 2019, 18:11
public void run() {
try {
throw new Throwable();
} catch (Throwable throwable) { }
}
это мне не помогло!
0
АлександрExpert
21 октября 2019, 18:12
public void run() throws Throwable
а лучше почитай про checked/unchecked исключения
0
Veryprosto
21 октября 2019, 18:18
этот вариант пробовал! не работает! Идея ругается!
0
АлександрExpert
21 октября 2019, 18:23
а, так это run() класса Thread(или потомка). не обратил внимание
да, в нем нельзя вот так просто объявить, что он бросает данное исключение
0
АлександрExpert
21 октября 2019, 18:26
задача какая? обработать исключения же
значит, тебе нужны несколько блоков catch
при этом предки должны идти после потомков, чтобы во все ветки можно было попасть
Upd. а бросать можно через throw new.
главное, чтоб оно было внутри try
0
Veryprosto
21 октября 2019, 18:39
package com.javarush.task.task25.task2510;
/* 1. В конструкторе Solution должен устанавливаться свой UncaughtExceptionHandler, который будет перехватывать возникшие ошибки и выводить текст в консоль.
2. Если выполнение нити Solution закончилось исключением Error, нужно вывести в консоль "Нельзя дальше работать".
3. Если выполнение нити Solution закончилось исключением Exception, нужно вывести в консоль "Надо обработать".
4. Если выполнение нити Solution закончилось исключением Throwable, нужно вывести в консоль "Поживем - увидим".
*/
public class Solution extends Thread {
public Solution() {
this.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
if (e instanceof Exception) System.out.println("Надо обработать");
else if (e instanceof Error) System.out.println("Нельзя дальше работать");
else if (e instanceof Throwable) System.out.println("Поживем - увидим");
}
});
}
@Override
public void run() {
//int b = 5/0;
//throw new Error();
try {
throw new Throwable();
} catch (Throwable throwable) { }
}
public static void main(String[] args) {
Solution solution = new Solution();
solution.start();
}
}
0