Название: Работа с исключениями Отправлено: iukash от Апрель 15, 2011, 13:37 В общем следующий вопрос, как работать с исключениями. Делаю так
Цитировать QFile *file_open; try { file_open->open(QFile::ReadOnly | QFile::Text); } catch(...) { } В общем при таком коде все равно исключение и оно не попадает в catch! Что делать? Название: Re: Работа с исключениями Отправлено: pokidoff от Апрель 15, 2011, 13:50 У меня ловятся исключения, которые я сам генерирую, иначе никак:
Код
В Qt везде обходятся без исключений, везде проверки на ошибки. Но я в проектах их использую: создал класс исключения, который знает имя файла и номер строки вызова throw, поставил глобальный хук, отправляющий инфу об исключении в базу, так очень легко отслеживать ошибки у сотрудников в локалке. Могу поделиться идеей. Название: Re: Работа с исключениями Отправлено: iukash от Апрель 15, 2011, 14:53 Цитировать У меня ловятся исключения, которые я сам генерирую, иначе никак Спасибо, теперь буду знать! Цитировать Могу поделиться идеей Да, нет, спасибо, было интересно именно обработать исключение которое само генерируется а не мной, если я знаю где исключение и почему оно генерится могу сам подстроиться.Просто такое решение сразу в голову пришло, а Цитировать if(!file_open) { file_open->open(QFile::ReadOnly | QFile::Text); } Название: Re: Работа с исключениями Отправлено: mutineer от Апрель 15, 2011, 14:58 Да, нет, спасибо, было интересно именно обработать исключение которое само генерируется а не мной, если я знаю где исключение и почему оно генерится могу сам подстроиться. Просто такое решение сразу в голову пришло, а Цитировать if(!file_open) { file_open->open(QFile::ReadOnly | QFile::Text); } только убери восклицательный знак и инициализируй указатель значением NULL Название: Re: Работа с исключениями Отправлено: pokidoff от Апрель 15, 2011, 15:35 Цитировать только убери восклицательный знак и инициализируй указатель значением NULL Мсье, вы попутали Delphi с C++. В плюсах все указатели целочисленные и их следует инициализировать 0, а так как это к тому же означает FALSE, то я имею полное право писать логическое НЕ в условии! Название: Re: Работа с исключениями Отправлено: mutineer от Апрель 15, 2011, 15:46 Цитировать только убери восклицательный знак и инициализируй указатель значением NULL Мсье, вы попутали Delphi с C++. В плюсах все указатели целочисленные и их следует инициализировать 0, а так как это к тому же означает FALSE, то я имею полное право писать логическое НЕ в условии! Имеешь-имеешь, вот только при таком условии внутрь ифа код войдет, когда указатель будет равен 0, что означает что объета там нет и работа с этим указателем как с валидным мало к чему хорошему приведет Ну и явная инициализация указателя еще никому не вредила. К тому же NULL эквивалентен 0, так что ниче я не попутал Название: Re: Работа с исключениями Отправлено: pokidoff от Апрель 15, 2011, 15:52 И как же он туда войдет, когда указатель равен нулю? Ты сам себе противоречишь.
Название: Re: Работа с исключениями Отправлено: mutineer от Апрель 15, 2011, 15:54 И как же он туда войдет, когда указатель равен нулю? Ты сам себе противоречишь. Нулевой указатель при приведении к булевому значению становится равен false. Логическое отрицание false дает true. Передача true ифу приводит к входу во внутренний блок. Где противоречие? |