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

Обработка исключение от собственного типа

30.06.2017, 18:59. Показов 1855. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Я бы хотел реализовать стек и использовать свои классы исключения для обработки ошибок. Итого имею:
C++
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
#pragma once
#include <string>
 
class StackIsEmptyException : public std::exception
{
    public:
        const char * what() const throw () 
        { 
            return "Stack was empty."; 
        }
 
 
};
 
class Stack
{
    public:
        Stack();
        Stack(Stack& old);
        ~Stack();
        void pop() throw(StackIsEmptyException);
        bool isEmpty();
    
    private:
        struct Element_
        {
            int value;
            Element_* next;
        };
 
        Element_* head_;
 
};
C++
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
#include "stdafx.h"
#include "Stack.h"
 
Stack::Stack()
{
    head_ = nullptr;
}
 
Stack::Stack(Stack & old)
{
}
bool Stack::isEmpty()
{
    return (head_ == nullptr);
}
 
void Stack::pop() throw(StackIsEmptyException)
{
    if (head_ != nullptr)
    {
        Element_* tmp = head_->next;
        delete head_;
        head_ = tmp;
    }
    else
    {    
        throw new StackIsEmptyException();
    }
}
Stack::~Stack()
{
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include "Stack.h"
 
using namespace std;
 
int main()
{
    try 
    {
        Stack st;
        st.pop();
    }
    catch (StackIsEmptyException e)
    {
        cout << "exception occurred: " << e.what();
    }
    return 0;
}
Ответ во вложении. Что я делаю не так?
Миниатюры
Обработка исключение от собственного типа  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2017, 18:59
Ответы с готовыми решениями:

Возвращение собственного типа из функции
Создал собственный тип, typedef double Point; а также функцию которая должна возвращать 3...

Организация ввода собственного типа
Здравствуйте, создаю собственный класс для работы со строками. Так вот, встал такой вопрос: как...

Создание файлов собственного типа
Скиньте, пожалуйста, литературу по созданию файлов со своим расширением, как создать своё...

Передача параметра собственного типа потоку
Потоку можно передавать один параметр типа Object. Это работает если тебе нужно передать переменную...

3
Заблокирован
30.06.2017, 19:03 2
Цитата Сообщение от Jesper_ Посмотреть сообщение
Что я делаю не так?
Кидаешь указатель, а ловишь значение. И вообще, пишешь на C++ как на Java.
0
0 / 0 / 0
Регистрация: 30.06.2017
Сообщений: 2
30.06.2017, 19:36  [ТС] 3
Изменение
C++
1
2
3
4
catch (StackIsEmptyException e)
    {
        cout << "exception occurred: " << e.what();
    }
на
C++
1
2
3
4
catch (StackIsEmptyException& e)
    {
        cout << "exception occurred: " << e.what();
    }
ничего не дает. Не ловит
0
Эксперт С++
8724 / 4304 / 958
Регистрация: 15.11.2014
Сообщений: 9,751
30.06.2017, 19:47 4
Лучший ответ Сообщение было отмечено Jesper_ как решение

Решение

Цитата Сообщение от Jesper_ Посмотреть сообщение
throw new StackIsEmptyException();
C++
1
throw StackIsEmptyException();
Цитата Сообщение от Jesper_ Посмотреть сообщение
catch (StackIsEmptyException e)
C++
1
catch (const StackIsEmptyException& e)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2017, 19:47
Помогаю со студенческими работами здесь

Свойство собственного компонента типа ComboBox
При создании своего компонента, как создать и определить свойство типа ComboBox ? Например: У...

Передача переменной на базе собственного типа
Подскажите плиз 1. Создал несколько своих типов (описывают структуру таблиц БД - поэтому имеют...

Массив Собственного Типа И Redim Preserve
Всем привет! Описан тип: Type myt p1 As String p2 As String End Type Объявлен массив:

Как создать массив объектов собственного типа
Как создать массив, в котором в одном элементу arr будут хранится данные собственного типа ...

Как посчитать Мах и Avg для собственного типа?
var composlugy = new { new {LName = &quot;Товт&quot;, address = &quot;raz&quot;, date = &quot;10.10.2015&quot;, poslyga =...

Как написать собственный файл (собственного типа и структуры)
Здравствуйте. Пишу на Си прогу которая создает файл собственной структуры и своего типа (ну пусть...


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

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

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