The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
try - catch не ловит exeptions, !*! node, 13-Окт-05, 14:01  [смотреть все]
Не ловит Segmentation fault

Примерчик простой

int buf[10], i;

try
{
  for(i=0;i<1000;i++) buf[i]=1234;
}
catch(...)
{
  printf("Exception\n");
  return 1;
}

printf("All right\n");

т.е. выделяю буфер в 10 элементов, а потом пытаюсь пихнуть туда 1000 элементов.
По идее должен возникнуть экзепшион и перехватиться cath-ом и обработаться, типа написать сообщение и выйти спокойно.
Реально же выводит следующее при запуске

All right
Segmentation fault

В чем я не прав и почему так получается?

Спасибо заранее за помощь

  • try - catch не ловит exeptions, !*! enot, 14:27 , 13-Окт-05 (1)
    • try - catch не ловит exeptions, !*! node, 14:44 , 13-Окт-05 (2)
      >>Не ловит Segmentation fault
      >>
      >>Примерчик простой
      >>
      >>int buf[10], i;
      >>
      >>try
      >>{
      >>  for(i=0;i<1000;i++) buf[i]=1234;
      >>}
      >>catch(...)
      >>{
      >>  printf("Exception\n");
      >>  return 1;
      >>}
      >>
      >>printf("All right\n");
      >>
      >>т.е. выделяю буфер в 10 элементов, а потом пытаюсь пихнуть туда 1000
      >>элементов.
      >>По идее должен возникнуть экзепшион и перехватиться cath-ом и обработаться, типа написать
      >>сообщение и выйти спокойно.
      >>Реально же выводит следующее при запуске
      >>
      >>All right
      >>Segmentation fault
      >>
      >>В чем я не прав и почему так получается?
      >>
      >>Спасибо заранее за помощь
      >

      >exception порождается вызовом throw, а кто тут вызывает throw? нихто...

      вообщем то, я всегда думал что throw для принудительного вызова exception
      а тут зачем делать принудительный вызов?
      тут задача такая: нечто (в даном примере залез за пределы выделенной памяти) срабатывает некоректно с exception-ом, который впоследствии хорошо бы отловить и обработать...
      вот как это сделать?
      то что написанно в примере не работает :( а почему не понятно
      а

  • try - catch не ловит exeptions, !*! Alexander S. SalieFF, 15:52 , 13-Окт-05 (4)
  • try - catch не ловит exeptions, !*! butcher, 16:00 , 13-Окт-05 (5)
    • try - catch не ловит exeptions, !*! node, 17:42 , 13-Окт-05 (6)
      >>В чем я не прав и почему так получается?
      >
      >Буквально недавно попадалось на глаза сообщение, прочтите:
      >http://gzip.rsdn.ru/forum/Message.aspx?mid=1421018&only=1


      ага, понятно, спасибо всем за советы!

      только вот почему все пишут, что перехватывать сигнал, это порочная практика или это бесполезно?

      я вот написал перехватчик и все нормально, екзепшн ловит на сигнал SIGSEGV, я там обработать могу, в конце концов, к примеру, закрыть открытые дискрипторы файлов или сокетов...
      только почему все говорят, что так не очень хорошо?
      есть какие то скрытые проблеммы?

      и еще вопрос, если так в Юниксах работают странно catch, то как пишут тогда вообще нормально программы под Юниксы?
      Извините за вопрос, просто писал много под Винды и вообщем хорошим тоном считается try catch использовать, т.к. может произойти что угодно, особенно если проект огромный и работает круглые сутки и в котором не хотелось бы , чтоб вываливалась прога с диким криком, а хотелось бы чтоб хотя бы закрывалась корректно если что...

      спасибо заранее за ответы

  • try - catch не ловит exeptions, !*! Владислав, 14:31 , 18-Ноя-09 (10)



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру