#include <iostream>
using namespace std;
struct List
{
List* Next;
};
List* Head=NULL;
int main()
{
Head=new List;
Head->Next=NULL;
List* ptr=new List;
Head->Next=ptr;
ptr->Next=NULL;
try
{
ptr=Head;
while(1)
{
ptr=ptr->Next;
}
}
catch(...)
{
cout<<"f";
}
return 0;
}
try,catcth. Отлавливаем ошибки динамической работы с памятью.
Ребят,помогите,пожалуйста,разобраться, как отловить ошибки динамической работы с файлами:
Если хотите ловить исключения, генерируемы системой, придется использовать системные сдедства: SEH/VEH под виндой, сигналы под линуксом.
Как вариант, можно написать свои поинтеры, которые по одним им известным критериям будут отслеживать свою корректность, но подумайте, стоят ли затраты на их создание пользой, от них полученной?
[QUOTE="Рихтер"]...исключения С++ — часть самого языка и его компилятор автоматически создает код, который вызывает деструкторы объектов и тем самым обеспечивает корректную очистку ресурсов.
Однако Вы должны иметь в виду, что компилятор Microsoft Visual С++ реализует обработку исключений С++ на основе SEH операционной системы. Например, когда Вы создаете С++-блок try, компилятор генерирует SEH-блок _try. С++-блок catch ста новится SEH-фильтром исключений, а код блока catch — кодом SEH-блока __except. По сути, обрабатывая С++-оператор throw, компилятор генерирует вызов Windows функции RaiseException, и значение переменной, указанной в throw, передастся этой функции как дополнительный аргумент.[/QUOTE]
2 GoldenMustang
В C++ Buider ваш код работает. Так что причину, видимо, надо искать в MinGW
Цитата: Нездешний
Это не совсем так
2 GoldenMustang
В C++ Buider ваш код работает. Так что причину, видимо, надо искать в MinGW
2 GoldenMustang
В C++ Buider ваш код работает. Так что причину, видимо, надо искать в MinGW
Только кое что товарищ Рихтер упустил, а именно начиная от различия типа исключения бросаемого через throw и самой системой до специального ключика компилятора чтобы он ловил и системные исключения.
В общем случае системные исключения и сигналы C++'шной конструкцией try / catch не обрабатываются и зашиваться на это не следует.
как используя исключения отловить ошибку ввода вывода?
Цитата: gnom113
как используя исключения отловить ошибку ввода вывода?
Написать обработчик!
ЗЫ. какой вопрос - такой и ответ.