Terminate called without an active exception
От: py  
Дата: 28.11.06 11:17
Оценка:
Что это может означает?
Результат того, что в деструкторе вызываю
pthread_cancel()
Posted via RSDN NNTP Server 2.0
Re: Terminate called without an active exception
От: py  
Дата: 28.11.06 14:37
Оценка:
Причина немного прояснилась.
После вызова pthread_cancel() — кидается исключения в потоке.

py wrote:

> Что это может означает?

> Результат того, что в деструкторе вызываю
> pthread_cancel()
Posted via RSDN NNTP Server 2.0
Re[2]: Terminate called without an active exception
От: Константин Л. Франция  
Дата: 28.11.06 15:28
Оценка:
Здравствуйте, py, Вы писали:

py>Причина немного прояснилась.

py>После вызова pthread_cancel() — кидается исключения в потоке.

py>py wrote:


>> Что это может означает?

>> Результат того, что в деструкторе вызываю
>> pthread_cancel()

кидать исключения в деструкторе нельзя — вызывается terminate. А вот почему without an active exception —
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Terminate called without an active exception
От: py  
Дата: 28.11.06 21:36
Оценка:
Я вынес из деструктора эту функцию.
Кидается исключение в потоке, когда я вызываю pthread_cancel.
Если компилировать gcc 3.4 на другом компе — все работает.
Очень странно.

> py>Причина немного прояснилась.

> py>После вызова pthread_cancel() — кидается исключения в потоке.
Posted via RSDN NNTP Server 2.0
Re[3]: Terminate called without an active exception
От: MaximE Великобритания  
Дата: 30.11.06 08:53
Оценка: +1
Здравствуйте, Константин Л., Вы писали:

КЛ>Здравствуйте, py, Вы писали:


py>>Причина немного прояснилась.

py>>После вызова pthread_cancel() — кидается исключения в потоке.

py>>py wrote:


>>> Что это может означает?

>>> Результат того, что в деструкторе вызываю
>>> pthread_cancel()

КЛ>кидать исключения в деструкторе нельзя — вызывается terminate.


Это ерунда. Из деструктора можно кидать исключения, хотя это может быть не самая удачная идея.

std::terminate вызывается, когда не обработав исключение, ты кидаешь еще одно. Например, когда деструктор вызван в результате раскрутки стэка после throw и ты кидаешь из деструктора еще одно исключение.

КЛ>А вот почему without an active exception —


Это throw вызван без аргумента не из catch-блока.

$ cat test.cc
int main() { throw; }
$ g++ -Wall -Wextra -o test test.cc
$ ./test
terminate called without an active exception
Aborted (core dumped)
Re[4]: Terminate called without an active exception
От: Константин Л. Франция  
Дата: 30.11.06 10:07
Оценка:
Здравствуйте, MaximE, Вы писали:

[]

КЛ>>кидать исключения в деструкторе нельзя — вызывается terminate.


ME>Это ерунда. Из деструктора можно кидать исключения, хотя это может быть не самая удачная идея.


ME>std::terminate вызывается, когда не обработав исключение, ты кидаешь еще одно. Например, когда деструктор вызван в результате раскрутки стэка после throw и ты кидаешь из деструктора еще одно исключение.


мда, подзабыл подробности

[]
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.