Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
5 / 5 / 2
Регистрация: 03.12.2013
Сообщений: 50
1

Объект в блоке try {} catch () {}

01.03.2016, 13:40. Показов 473. Ответов 4
Метки нет (Все метки)

Такой вопрос. Есть конструктор, который выбрасывает ошибку, есть наследник, который тоже выбрасывает эту же ошибку. В классе Main необходимо ловить эту ошибку. Но вот в чем загвоздка, объект тогда необходимо создавать в блоке try - catch, все классно, все работает, но когда добавляешь этот объект по ссылке например в коллекцию, то логично что его видно не будет. Как обойти такую проблему?

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
public abstract class Product implements IProduct {
 
    private String name;
    private double price, weight;
 
    Product() {
        name = "Default";
        price = 0;
        weight = 0;
    }
    Product(String name, double price, double weight) throws BelowZeroException {
        this.name = name;
        setPrice(price);
        this.weight = weight;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    public void setPrice(double price) throws BelowZeroException {
        if(price < 0)
            throw new BelowZeroException(price);
        this.price = price;
    }
    public void setWeight(double weight) {
        this.weight = weight;
    }
    public String getName() {
        return name;
    }
    public double getPrice() {
        return price;
    }
    public double getWeight() {
        return weight;
    }
 
    abstract public String toString();
}
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
public class Cookie extends Product implements ICookie {
 
    private String cookieShape, typeDough; // Форма печенья, тип теста.
 
    public Cookie() {
        super();
        cookieShape = "Default";
        typeDough = "Default";
    }
    public Cookie(String name, double price, double weight, String cookieShape, String typeDough) throws BelowZeroException {
        super(name, price, weight);
        this.cookieShape = cookieShape;
        this.typeDough = typeDough;
    }
 
    public void setCookieShape(String cookieShape) {
        this.cookieShape = cookieShape;
    }
    public void setTypeDough(String typeDough) {
        this.typeDough = typeDough;
    }
    public String getCookieShape() {
        return cookieShape;
    }
    public String getTypeDough() {
        return typeDough;
    }
 
    public String toString()
    {
        return getName() + " " + getPrice() + " " + getWeight() + " " + cookieShape + " " + typeDough;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Main {
    public static void main(String args[])
    {
        try {
            Cookie shortbread = new Cookie("Christmas", 65.20, 1.0, "Circle", "Shortbread");
            Cookie gingerbread = new Cookie("Gingerbread cookie", 60.05, 1.0, "Man", "Gingerbread");
            Cake honey = new Cake("Cake Honey", 12.0, 2.0, "Condensed milk", "Condensed milk");
            Cake napoleon = new Cake("Cake Napoleon", 110.0, 2.5, "Sour cream", "Custard");
        } catch (BelowZeroException exception) {
            System.out.println(exception);
        }
 
        Collection collection = new Collection();
 
        collection.addItem(shortbread); // Здесь не видно ссылок (((
        collection.addItem(gingerbread); // Здесь не видно ссылок (((
        collection.addItem(honey); // Здесь не видно ссылок (((
        collection.addItem(napoleon); // Здесь не видно ссылок (((
    }
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2016, 13:40
Ответы с готовыми решениями:

Проблема с возвращающим значением метода в блоке try-catch
Поставил блок try -catch, начало ругаться на значение return myArray;, которое должен вернуть...

Ошибка в с try - catch блоке
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...

Не ловиться строка в блоке try catch
try { int* s = new int; *s = size &lt; 0 ? (int)size + 256 : size; if (*s&lt;=0) { throw...

Получить имя функции в блоке catch
Внутри метода находится блок try-catch. Как получить при исключении имя метода ?

4
81 / 81 / 32
Регистрация: 17.02.2016
Сообщений: 226
01.03.2016, 13:44 2
А что мешает создавать коллекцию в блоке try?
0
5 / 5 / 2
Регистрация: 03.12.2013
Сообщений: 50
01.03.2016, 13:47  [ТС] 3
Ты имеешь ввиду так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 Collection collection = new Collection();
        
        try {
            Cookie shortbread = new Cookie("Christmas", 65.20, 1.0, "Circle", "Shortbread");
            Cookie gingerbread = new Cookie("Gingerbread cookie", 60.05, 1.0, "Man", "Gingerbread");
            Cake honey = new Cake("Cake Honey", 12.0, 2.0, "Condensed milk", "Condensed milk");
            Cake napoleon = new Cake("Cake Napoleon", 110.0, 2.5, "Sour cream", "Custard");
 
            collection.addItem(shortbread);
            collection.addItem(gingerbread);
            collection.addItem(honey);
            collection.addItem(napoleon);
            
        } catch (BelowZeroException exception) {
            System.out.println(exception);
        }
А это не будет костылем, или не нарушает принципов ООП, просто хочется все как у людей с прямыми руками)
0
81 / 81 / 32
Регистрация: 17.02.2016
Сообщений: 226
01.03.2016, 13:53 4
senderlender, я как бы не гуру, но кажется что это не костыль.
Тут поступают некорректные входные данные и программа должна вывалиться с исключением - костылей я не вижу
1
5 / 5 / 2
Регистрация: 03.12.2013
Сообщений: 50
01.03.2016, 13:58  [ТС] 5
Ну лааадно) Спасибо большое, тогда так и оставлю)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2016, 13:58

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Ошибка, связанная с памятью, в блоке Try catch
Ругается на память. try { if(pObject-&gt;empty())//проверяет или не...

Как обработать исключение в блоке catch
Есть такой несложный код: using System; namespace TestApp { class Program { ...

Не видны переменные, объявленные в блоке Try/Catch
try{ int i = 0; } i++; Ошибка Как исправить, заставить увидеть переменную?

Как вывести сообщение об ошибке в блоке Try Catch
Привет. Сохраняю файл Visio: dim name as string=&quot;C: тут весь путь&quot; if name&lt;&gt;&quot;&quot; then try...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.