Как бросить своё исключение?

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):Я их прочитал больше, чем на иной винте влезает.Об исключениях нашёл лишь предельно краткие и предельно же туманные сведения в сводке ключевых слов в конце "теория и практика c++" Гербердта Шилдта. И "вектор" для этого инкладить?
Абсолютно в любой книге, даже в самой плохой, об исключениях будет расписано в любом случае, так как это неотъемлемая часть языка. Делаю предположение, что ты скорее всего читал по верхам, пропуская то, что не было интересно. Отсюда такой результат. И по поводу книжкек. Сотню их читать совсем не обязательно. Достаточно открыть стандарт и прочитать его от корки до корки.
Сионист писал(а):И "вектор" для этого инкладить?
Зачем? Мне показалось, я достаточно ясно определил инклюд, который необходим. Вектор "знает" об исключении, а исключение о векторе - нет.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):Абсолютно в любой книге, даже в самой плохой, об исключениях будет расписано в любом случае, так как это неотъемлемая часть языка.
Не всякая часть языка изложена в каждой книге. Об исключениях я хоть что то нашёл ровно в одной книге, арифметические операторы оказались не разжёваны вообще ни в одной, мне попадавшейся, а это тоже часть языка, о самом существовании оператора запятая узнал на форуме, а как выглядит оператор присваивания пришлось выуживать у Петзолдта во фрагменте WinMain, задающем поля структуры WNDCLASSEX. Зато полно инфы о том, что постфиксный инкремент должен где то сохранить старое значение переменной, чтоб потом вернуть его, а не новое и поэтому работает медленнее, что быстрей сравнивать с нолём, чем другим числом, поэтому

Код: Выделить всё

for (i=n-1; i>=0; --i)
лучше, чем

Код: Выделить всё

for (i=0; i<n; --i)
, а

Код: Выделить всё

for (i=n-1; i>0; --i)
лучше, чем

Код: Выделить всё

for (i=1; i<=n; --i)
, что если в цикле происходит обращение к последовательным элементам массива, то лучше счётчиком сделать не индекс, по которому надо каждый раз вычислять указатель на элемент, а сразу сам указатель, что иногда можно ускорить работу программы, отложив вычисления, или, наоборот, вычислив что то заранее, что адрес возврата хранится в стеке рядом с последним операндом и передав операнд большего размера можно этот адрес подделать.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Я больше часа угробил на цикл вида

Код: Выделить всё

for ({i=0; j=0}; i<n; {++i; j=...})
, пока мне коллега, увидев это безобразие через плечо, ни подсказал.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Оксалайя писал(а):Просмотрев созданные Вами темы, прихожу к выводу, что Вы до сих пор пользуетесь раритетным винчестером на 3.5 Мб, иного объяснения просто не нахожу.
Винчестеров меньше 400 мегабайт не видел вообще.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):Мне показалось, я достаточно ясно определил инклюд, который необходим.
Мне не нужны все исключения std. Мне нужно только исключение обращения к несуществующему элементу.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а): Не всякая часть языка изложена в каждой книге. Об исключениях я хоть что то нашёл ровно в одной книге, арифметические операторы оказались не разжёваны вообще ни в одной, мне попадавшейся, а это тоже часть языка, о самом существовании оператора запятая узнал на форуме, а как выглядит оператор присваивания пришлось выуживать у Петзолдта во фрагменте WinMain, задающем поля структуры WNDCLASSEX
Чтобы не быть голословным, укажи какую именно книгу по С++ ты читал у Шилдта (у него их просто несколько), и я тебя ткну в параграф об исключениях и в параграф об операторе присваивания. То, что ты нигде ничего не можешь найти говорит лишь о том, что ты не умеешь внимательно читать - больше ни о чём. Читать книги нужно целиком, а не листать и потом говорить, что прочёл, но ничего не нашёл.
Сионист писал(а):Мне не нужны все исключения std. Мне нужно только исключение обращения к несуществующему элементу.
Ну а что прикажешь делать, если они определены в одном хедере? Я не понимаю, что ты от меня хочешь, когда пишешь подобное. Ты когда Windows.h включаешь для того, чтобы вызвать одну единственную функцию, тебя не смущает, что ты за ней тащишь по крайней мере сотен пять других API функций? Ну прям как маленький.

И ещё просьба. Не флуди в теме. Здесь мы говорим исключительно об исключениях.

Собственно, если мы вернёмся к теме обсуждения, то я скажу, что достаточно набить в гугл "С++ исключения" и просмотреть первые пару статей. И никаких "выуживаний у Петзольда" либо других издевательств над своим невинным мозгом не понадобится! Пора становится взрослее и учиться получать информацию из готовых источников, используя поиск и обычное умение читать. В этом ничего сложно и ничего страшного нет, поверь.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):Чтобы не быть голословным, укажи какую именно книгу по С++ ты читал у Шилдта (у него их просто несколько),
Теория и практика c++.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):Ну а что прикажешь делать, если они определены в одном хедере? Я не понимаю, что ты от меня хочешь, когда пишешь подобное. Ты когда Windows.h включаешь для того, чтобы вызвать одну единственную функцию, тебя не смущает, что ты за ней тащишь по крайней мере сотен пять других API функций? Ну прям как маленький.
string и wstring тоже описаны вместе. Но это не значит, что нельзя написать свой string отдельно от wstring. Другое дело, что писать придётся много, самостоятельно реализовывать все операции над строками и долго отлаживать. Но свой string написать можно. И я его даже писал. Но одно дело все операции над строками даже одного типа, а совсем другое одно исключение. И я не инклажу windows.h ради одной функции. Я инклажу windows.h ради и WinMain, и функций GDI, и типов параметров функций GDI.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):Собственно, если мы вернёмся к теме обсуждения, то я скажу, что достаточно набить в гугл "С++ исключения" и просмотреть первые пару статей.
Пару статей не читают месяцев восемь.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):Пару статей не читают месяцев восемь.
Странная логика. Ты восемь месяцев как контрагрумент используешь? Я как раз наоборот говорю, что не стоило терять столько времени, можно было просто прочесть статейку и всё понять по исключениям.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить