170 похожих чатов

Всем привет, столкнулся с проблемой, что совсем не понимаю как

обрабатывать исключения в конструкторе
У меня есть класс, который обозначает прямоугольник, он конструируется по 2м точкам. Эти точки могут выходить за пределы моего экрана, из-за чего я собственно и выбрасываю исключение
Код:
class rectangle : public rotatable {
protected:
point sw, ne;
public:
rectangle(point a, point b)
{
if (on_screen(a) && on_screen(b)) {
sw = a;
ne = b;
} else throw CreationError("rectangle creation error");
}
само исключение я отлавливаю в main функции:

try{
rectangle hat(point(10000,0), point(2,0));
}
catch(CreationError& ex){
cout << ex.what() << endl;
}
Я хочу заменить объект hat (прямоугольник который не создался) на эталонный прямоугольник, который точно вписывается в мой экран
Но проблема в том, что так как исключение я отлавливаю в конструкторе объекта, его область видимости ограничивается try, catch и дальнейшей программе я его передать не могу
Как это можно сделать?

1 ответов

7 просмотров

Обернуть логику в функции В любом случае, раз конструктор бросает исключение - придётся его под try/catch держать Ну или создавать на куче (не особо хорошо)

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Всем привет! У меня почему-то по-разному отображается TListView в Debug и Release режимах (FireMonkey)! При запуске под Win приложения TListView заливается программо. в Debug ...
Александр COM
8
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
Парни, спасайте. RAD Studio 12 творит какую-то дичь. У меня есть метод (event), который вызывает другой метод, т.е. он состоит из 1-й строки вызова. Ставлю бряк на event, запу...
Eugene Krasnikov (ᴊɪɴ x)
3
окей, дело реально в org было. но что за мусор в конце?
Vi Chapmann
15
Карта сайта