Опять всё те же Try и Catch в Borland
От: SlavaNV  
Дата: 12.10.05 07:15
Оценка:
Привет всем. Читал nen про этот наболевший try...catch, но так и не решил своей проблемы. А заключается она вот в чём: У меня есть класс, пусть будет MyClass:

class MyClass
{
public:
....
    struct SErrors
    {
        char* S;
        SyntaxError(char* M){S=M;}
    };
.....
};


Вот. В процедурах класса пытаюсь делать throw (SErrors("Error!"));
В самом майне, или при нажатии конопки обрабатываю:
MyClass Class;
try
{
Class.DoSomeThing();
}
catch(MyClass::SError E)
{
ShowMessage(E.S);
}


выдаёт ошибку в том месте где у меня throw (Например: if (strlen(String)<1) throw(SError("String is Empty!")): Raised Exception Class MyClass::SError with Message "Exception Object Adress 0x11A6FCA"
Что не так? и примеры простые с инета копировал, всё равно вылетает эта ошибка. Подскажите, пожалуйста. Заранее спасибо.
P.S.: У меня Borland C++ Builder 6.0
Re: Опять всё те же Try и Catch в Borland
От: crable США  
Дата: 12.10.05 07:40
Оценка:
Здравствуйте, SlavaNV, Вы писали:

SNV>Привет всем. Читал nen про этот наболевший try...catch, но так и не решил своей проблемы. А заключается она вот в чём: У меня есть класс, пусть будет MyClass:


SNV>
SNV>class MyClass
SNV>{
SNV>public:
SNV>....
SNV>    struct SErrors
SNV>    {
SNV>        char* S;
SNV>        SyntaxError(char* M){S=M;}
SNV>    };
SNV>.....
SNV>};
SNV>


SNV>Вот. В процедурах класса пытаюсь делать throw (SErrors("Error!"));

SNV>В самом майне, или при нажатии конопки обрабатываю:
SNV>
SNV>MyClass Class;
SNV>try
SNV>{
SNV>Class.DoSomeThing();
SNV>}
SNV>catch(MyClass::SError E)
SNV>{
SNV>ShowMessage(E.S);
SNV>}
SNV>


SNV>выдаёт ошибку в том месте где у меня throw (Например: if (strlen(String)<1) throw(SError("String is Empty!")): Raised Exception Class MyClass::SError with Message "Exception Object Adress 0x11A6FCA"

SNV>Что не так? и примеры простые с инета копировал, всё равно вылетает эта ошибка. Подскажите, пожалуйста. Заранее спасибо.
SNV>P.S.: У меня Borland C++ Builder 6.0
Вроде бы, Builder (и Delphi) при запуске программ из IDE сам перехватывает исключения и рисует окошко с сообщением об ошибке, если запускать полученный exe самому, то ничего подобного не будет.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: Опять всё те же Try и Catch в Borland
От: Ligen Украина http://zone-of-ambiguity.blogspot.com/
Дата: 12.10.05 08:01
Оценка:
Здравствуйте, SlavaNV, Вы писали:

SNV>выдаёт ошибку в том месте где у меня throw (Например: if (strlen(String)<1) throw(SError("String is Empty!")): Raised Exception Class MyClass::SError with Message "Exception Object Adress 0x11A6FCA"

SNV>Что не так? и примеры простые с инета копировал, всё равно вылетает эта ошибка. Подскажите, пожалуйста. Заранее спасибо.
SNV>P.S.: У меня Borland C++ Builder 6.0

Это всего лишь IDE перехватывает, когда под ней запускаешь. Можно ее отучить от этого через настройки меню Tools->Environment->Debug Options, кажется, под рукой нету...
Там нужно снять 2 чекбокса — "Stop on Delphi exceptions" и "Stop on user exceptions"

Вообще, сообщению место в Delphi & Builder
Viva el Junta Militar! Viva el Presidente!
Re: Опять всё те же Try и Catch в Borland
От: denisku Россия  
Дата: 13.10.05 08:03
Оценка:
Здравствуйте, SlavaNV, Вы писали:

[skipped]
Кроме всего уже сказанного, надо бы определить конструктор копирования для твоего класса. Ибо все объекты исключений копируются, если компилятор не произведет дополнительную оптимизацию.
Извините за потраченный траффик..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.