Показать сообщение отдельно
Старый 19.09.2006, 16:49   #6  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от korvin Посмотреть сообщение
После долгих пыток выяснил следующее: ловится исключение толко если блок try ... catch начинается вне перед стартом транзакции но появление окна инфолога это не лечит. Неужели никто не знает как его отключить...
Сейчас ковырялся с DLL/DLLFunction и наткнулся на ту же фигню: успешно ловлю исключение Exception::Internal, но сообщение infolog все равно появляется. Вылечилось до удивления просто:
PHP код:
catch (Exception::Internal)
{
    
infolog.clear();

Здесь при обработке исключения infolog будет очищен и не появится вовсе. В более затейливом сценарии, если какие-то сообщения инфолога надо все-таки сохранить, можно сделать так:
PHP код:
int nlines 0;
;
info("blah-blah-blah");         // выводим информативное сообщение      
setprefix("prefix");                                                    
warning("blah-blah");           // ...и еще одно                        
try                                                                     
{                                                                       
    
setprefix("prefix2");       // префиксы сообщений нормально работают
    
error("blah");              // эту ошибку надо обязательно показать 
    
nlines infolog.line();    // запомним, сколько строк оставить
    // далее может генериться Exception::Internal
    // но мы его видеть не хотим
}
catch (
Exception::Internal)
{
    
infolog.clear(nlines);      // оставить только nlines строк