Как бросить своё исключение?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Например, в операторе-члене ограниченного массива, выполняющем доступ к элементу этого массива. И как бы получше это исключение обозвать, если оно бросается при доступе к несуществущему элементу? И ещё как потом его поймать?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Наверное речь идет о throw
Можно создать свой класс-наследник от std::exception и в catch ловить именно исключения этого класса
Можно создать свой класс-наследник от std::exception и в catch ловить именно исключения этого класса
It's a long way to the top if you wanna rock'n'roll
И как его создать?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ну да, сроу. Что в него писать?somewhere писал(а):Наверное речь идет о throw
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Как? Расскажите.somewhere писал(а):Наверное речь идет о throw и в catch ловить именно исключения этого класса
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Господи, да это же описывается в любой даже самой простой книге по языку. Возьми хоть одну прочти. Неужели не стыдно?
Вот так свой класс-исключение можно сделать:
А вообще, если уж речь зашла об ошибке выхода за границы массива, то есть смысл использовать готовое исключение, которое выбрасывается из вектора в подобных случаях. Исключение имеет название out_of_range.
Вот так свой класс-исключение можно сделать:
Код: Выделить всё
class MyException
{
};
...
void F()
{
throw MyException();
}
...
void SomeFunction()
{
try
{
F();
}
catch (const MyException&)
{
std::cout << "My error occured" << std::endl;
}
}
Код: Выделить всё
#include <stdexcept> // std: :o ut_of_range
template <class T>
class MyVector
{
public:
...
T& operator [](int idx)
{
if (idx < 0 || idx >= m_len)
{
throw std: :o ut_of_range("Range error in my vector");
}
...
}
};
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ну как, как...Находите на клавиатуре английскую букву "t", жмёте. Потом находите "h", жмёте. Далее повторите для букв "r", "o", "w". И вуаля - throw готово. Можете переходить к более сложным упражнениям.Сионист писал(а):Как? Расскажите.
Слово "throw" мне знакомо. Расскажите об его операнде, операнде cath и как это исключение создать.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Я их прочитал больше, чем на иной винте влезает.Об исключениях нашёл лишь предельно краткие и предельно же туманные сведения в сводке ключевых слов в конце "теория и практика c++" Гербердта Шилдта.Romeo писал(а):Господи, да это же описывается в любой даже самой простой книге по языку. Возьми хоть одну прочти. Неужели не стыдно?
И "вектор" для этого инкладить?А вообще, если уж речь зашла об ошибке выхода за границы массива, то есть смысл использовать готовое исключение, которое выбрасывается из вектора в подобных случаях. Исключение имеет название out_of_range.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Сионист писал(а):Слово "throw" мне знакомо. Расскажите об его операнде, операнде cath и как это исключение создать.
Попробуйте начать с азов. Судя по формулировкам Ваших вопросов, к Страуструпу приступать Вам ещё рано, поэтому посоветую для начала освоить простейшие приёмы поиска информации в интернете. В качестве формулировки запроса подойдёт "С++ для начинающих". Вы удивитесь, но в первом же десятке ссылок Вы сможете почерпнуть массу полезной информации, которая позволит вам не заваливать форум кучей тем с глубокомысленными вопросами, от которых многоуважаемый Ромео (дай ему Великий Бог Машин терпения и сил), наверное, уже все волосы на голове вырвал и переключился на другие части своего тела, обладающие волосяным покровом.
Просмотрев созданные Вами темы, прихожу к выводу, что Вы до сих пор пользуетесь раритетным винчестером на 3.5 Мб, иного объяснения просто не нахожу.Сионист писал(а):Я их прочитал больше, чем на иной винте влезает.Об исключениях нашёл лишь предельно краткие и предельно же туманные сведения в сводке ключевых слов в конце "теория и практика c++" Гербердта Шилдта.