Всем привет! Помогите пожалуйста решить проблему.
Проблема следующая. Есть exe и dll, подгруженная в нем. В exe вызывается метод из dll, например так:
try
{
procFromDll();
}
catch (CMyException* exc)
{
//обработка и удаление исключения
}
в dll при вызове функции procFromDll происходит примерно следующее:
try
{
CMyException* exMy;
exMy = new CMyException;
throw exMy;
}
catch (CMyException* ex)
{
throw ex;
}
Первый вызов фунции dll из exe проходит, а вот второй уже падает (с разными ошибками — или AccessViolation, или Stack Overflow, или просто виснет). Причем, если при вызове функции procFromDll в dll оставить только такой код —
CMyException* exMy;
exMy = new CMyException;
throw exMy;
то все работает.
В чем может быть дело и как избежать ошибки (при том что необходимо оставить отлов и перебрасывание исключения, как в первом варианте)?
Здравствуйте, UncleNick, Вы писали:
UN>Всем привет! Помогите пожалуйста решить проблему.
UN>Проблема следующая. Есть exe и dll, подгруженная в нем. В exe вызывается метод из dll, например так:
UN>UN>try
UN>{
UN> procFromDll();
UN>}
UN>catch (CMyException* exc)
UN>{
UN> //обработка и удаление исключения
UN>}
UN>
Общая практика не приветствует бросание исключений из ДЛЛ.