Пытаюсь реализовать собственный класс-исключение. Согласно условию он должен выводить сообщение об ошибке по умолчанию ("Устройство недоступно") и иметь поле "устройство" с геттером, которое хранит невалидный объект-устройство, который привел к появлению исключения.
Делаю так:public class DeviceValidationException extends RuntimeException {
public void start() throws IllegalStateException{
throw new IllegalStateException ("Device is not valid for operation");
}
protected int device;
public int getDevice() throws IllegalStateException{
try {
return device;
}
catch (IllegalStateException e){
System.out.println("Device is not valid for operation");
throw e;
}
}
Но есть серьезное подозрение, что это неправильно и мой гет-метод совершенно не хранит то, что нужно. Кроме того нужен ли мне сеттер в пару?
Далее необходимо реализовать конструктор с 2 аргументами-строкой, которой будет передаваться имя операции, для которой устройство оказалось невалидным (я так понимаю, что это будет метод getDevice но как это сделать,увы, не понимаю) и объектом-устройством (device Device), который привёл к появлению исключения. При этом конструктор должен вызвать родительский конструктор с аргументом-строкой, но передать не входящую строку, а собрать её из сообщения по умолчанию и, если входящая не null, добавить ее через пробел. Аргумент device задаёт значение полю device. И тут проблема возникла еще на объявлении конструктора( DeviceValidationException (String operation, Device device){
super(operation, device);
}
Компилятор ругается на device.
У вас код исключения, код который бросает исключение и код который обрабатывает исключение почему-то смешаны в кучу.
Класс исключения:
public class DeviceValidationException extends RuntimeException {
private Device device;
public DeviceValidationException (Device device) {
super("Device " + device.getName() + " is not valid for operation");
this.device = device;
}
public Device getDevice() {
return device;
}
Пример обработки:
try {
//код который бросает исключение
}
catch (DeviceValidationException e) {
System.out.println(e.message());
//можно сделать что-нибудь с device
e.getDevice().doAnything()
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Суть в том, что я добавил фото как Background, и сверху хочу еще добавить элементов (линии, другие панели, текс - это не важно), но при добавлении,...
Приложение загружает в RecyclerView много изображений из сети с помощью Picasso, версия 271828
Помогите мучает воппрос, есть абстрактный класс с одним абстрактным методом: