2 / 2 / 5
Регистрация: 28.06.2015
Сообщений: 81
1

Java 8. Задание из книги на обработку исключений

17.07.2017, 22:24. Показов 1225. Ответов 1

Author24 — интернет-сервис помощи студентам
Здравствуйте, возник вопрос в связи со следующим заданием из книги:
Напишите метод uncheck(), перехватывающий все проверяемые исключения и превращающий их в непроверяемые, как показано в приведенном примере ниже:
Java
1
2
3
4
5
6
new Thread(uncheck(
    () - > {
                  System.out.println("ZZZzzz");
                  Thread.sleep(1000);
 
             })).start();
Подсказка: определите сначала интерфейс RunnableEx, в методе run() которого могут быть сгенерированы исключения. Затем реализуйте метод
Java
1
public static Runnable uncheck(RunnableEx runner)
. Воспользуйтесь лямбда выражением в методе uncheck();

Возникает вопрос - зачем в подсказке указывается, что нужно создавать дополнительно интерфейс с методом run() ? Почему нельзя просто заключить вышеуказанный код в блок try{} catch(){} ?

Добавлено через 1 час 36 минут
UPDATE

Кажется я не правильно понял задание. Нужно описать работу метода uncheck так, чтобы в нем не вызывалось исключение и для этого требуется написать какую-то обертку, в которой это исключение будет перехвачено.

Добавлено через 22 минуты
Промежуточный результат у меня такой:

Java
1
2
3
public interface RunnableEx {
    Runnable run() throws InterruptedException;
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
    public static void main(String[] args) {
       
        new Thread(uncheck(() ->{
            System.out.println("ZZZzzz");
            Thread.sleep(1000);
        })).start();
    }
 
    public static Runnable uncheck(RunnableEx runnableEx){
        try {
            return runnableEx.run();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

Но компилятор выдает ошибку вот в этом месте
Java
1
(здесь)})).start();
- missing return statement. Что я должен здесь вернуть ?

Добавлено через 5 минут
Доперло:

Java
1
2
3
public interface RunnableEx {
    void run() throws InterruptedException;
}
Java
1
2
3
4
5
6
7
8
public static Runnable uncheck(RunnableEx runnableEx){
        try {
            runnableEx.run();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }
Добавлено через 5 минут
Остается непонятным только одно - как конструктор класса Thread понимает, что мы передаем ему Runnable ?
Java
1
new Thread(uncheck(() ->{
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2017, 22:24
Ответы с готовыми решениями:

Добавить обработку исключений
Вывожу массив в Стринг Грид, потом этом массив нужно умножить на другой массив. Но преподаватель...

Добавить обработку исключений
Для этой программы нужно сделать обработку исключений, через try и catch вроде это делается, но...

Написать обработку исключений калькулятора
Помогите написать обработку исключений, на пустую строку, на неправильный формат, на деление на...

Нужно сделать обработку исключений
Делаю программу под Windows с использованием форм. Нужно при поиске обрабатывать исключения при...

1
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
17.07.2017, 23:41 2
Цитата Сообщение от Willyams Посмотреть сообщение
понимает, что мы передаем ему Runnable
1. Потому что Thread умеет принимать Runnable;
2. Runnable - интерфейс с одним недефолтным методом;
3. Так в java работают лямбды.

А решение неправильное. Скорее всего, предполагалось, что-то вроде такого.
Java
1
2
3
4
5
6
7
8
try {
  // do something...
} catch (Exception e) {
  if (e instanceof RuntimeException) {
    throw (RuntimeException) e;
  }
  throw new RuntimeException(e);
}
1
17.07.2017, 23:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2017, 23:41
Помогаю со студенческими работами здесь

Как правильно производить обработку исключений?
Double x,с; Console.Write("введите X:"); try { x =...

Как реализовать глобальную обработку ошибок/исключений?
Здравствуйте. На php есть возможность глобально отлавливать все исключения и ошибки, вплоть до...

Сделать обработку исключений на ввод некорректных данных
Добрый день! Хочу сделать обработку исключений на ввод некорректных данных. Но выдает ошибку. { ...

Создать обработку всех исключений текущей сборки
Допустим что в данной сборке я вызвал MyException , мне надо сделать так чтобы эта ошибка была не...

Обработку исключений при вводе некорректных данных
#include <iostream> #include <signal.h> using namespace std; class Student{public: string...

Итератор. Задание из книги "Thinking in Java". Брюс Эккель
Взялся выполнить следующее задиние из книги "Thinking in Java": Напишите метод, который использует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru