try
{
//некоторые действия
throw new exception("ля ля ля");
}
catch(exception e)
{
//можно обрабатывать этот exception
}
Вопрос об исключениях (try,catch,throw)
Код:
я попробывал реализовать такой же код в борланде, но появилась ошибка типа "че такое exception"...
Искал долго в хелпе нашел что есть в стле except, попробывал его поюзать, но не получилось:-(
Может кто подскажет?
ЗЫЫ: интересует консольный вариант без VCL. (без SysUtils.hpp)
МОжно кидать в исключении любой тип - главное чтоб он существовал. ))
Код:
include <exception>
using namespace std;
try
{
throw new exception("Test");
}
catch (exception *e)
{
e->what();
}
using namespace std;
try
{
throw new exception("Test");
}
catch (exception *e)
{
e->what();
}
и будет все замечательно работать:-)
берем этот же код и вставляем в C++ Borland и получаем как не странно, болт:-(
а точнее ошибку:
[BCC32 Error] Unit1.cpp(48): E2285 Could not find a match for 'exception::exception(const char *)'
ЗЫЫ: ошибка вполне понятная....но встает вопрос: что делать и как быть?:-)
Согласно стандарту в классе std::exception нет конструктора с таким параметром (строкой):
Код:
namespace std {
class exception {
public:
exception() throw();
exception(const exception&) throw();
exception& operator=(const exception&) throw();
virtual ˜exception() throw();
virtual const char* what() const throw();
};
}
class exception {
public:
exception() throw();
exception(const exception&) throw();
exception& operator=(const exception&) throw();
virtual ˜exception() throw();
virtual const char* what() const throw();
};
}
То что тот код работает в MSVC - ни о чем не говорит. Следуйте стандарту и независимой от компилятора документации по стандартной библиотеке и все будет работать и переноситься без проблем.
А вот зачем кидать свое исключение экземпляром класса exception - не совсем понятно. Можно было бы и поконкретней сделать исключения или свой объявить в том числе и отнаследовав от std::exception
Код:
throw new exception("Test");
Код:
throw Exception("Test");
Цитата: nikipelovav
Попробуй заменить код
на
Код:
throw new exception("Test");
Код:
throw Exception("Test");
Exception - это класс VCL. и объявлен он в SysUtils.hpp.
Цитата: aks
Ну билдер все правильно пишет не смотря на свою обычную глючность. )
Согласно стандарту в классе std::exception нет конструктора с таким параметром (строкой):
То что тот код работает в MSVC - ни о чем не говорит. Следуйте стендарту и независимой от компилятора документации по стандартной библиотеке и все будет работать и переноситься без проблем.
А вот зачем кидать свое исключение экземпляром класса exception - не совсем понятно. Можно было бы и поконкретней сделать исключения или своя объявить в том числе и отнаследовав от std::exception
Согласно стандарту в классе std::exception нет конструктора с таким параметром (строкой):
Код:
namespace std {
class exception {
public:
exception() throw();
exception(const exception&) throw();
exception& operator=(const exception&) throw();
virtual ˜exception() throw();
virtual const char* what() const throw();
};
}
class exception {
public:
exception() throw();
exception(const exception&) throw();
exception& operator=(const exception&) throw();
virtual ˜exception() throw();
virtual const char* what() const throw();
};
}
То что тот код работает в MSVC - ни о чем не говорит. Следуйте стендарту и независимой от компилятора документации по стандартной библиотеке и все будет работать и переноситься без проблем.
А вот зачем кидать свое исключение экземпляром класса exception - не совсем понятно. Можно было бы и поконкретней сделать исключения или своя объявить в том числе и отнаследовав от std::exception
Спасибо за совет. Буду пробывать.
А у кого-нибудь имеется дока по этим блокам и работай с ними? желательно с уклоном на борландовский Си..в инете нарыл, но там идет с уклоном на майкрософтовский си и оч много различий...