Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Victor Wagner                        2:5020/400     18 Sep 2002  22:13:40
 To : Serguei Trouchelle
 Subject : Re: try {}
 -------------------------------------------------------------------------------- 
 
 Serguei Trouchelle <Serguei.Trouchelle@p1.f4077.n550.z2.fidonet.org> wrote:
 
  AK>>         Есть ли в перле что то подобное как в си
  AK>>         try {...} finally {...}
 
 ST> Этого даже в си нет. (Багландовые извpащения мы не считаем)
 
 Друзья, вы оба не правы!
 
 AK - тем, что эта конструкция не из сей, а из плюсов,
 ST - тем, что плюсы - не багландовые извращения, а вполне уважаемый
     язык. Правда, используемый гораздо чаще, чем он реально нужен,
     и без достойного понимания а)того  что это отдельный язык,
     б) того как им следует пользоваться.
 
 В перле блок с перехватом ошибки реализуется с помощью
 
 eval {
 
 };
 
 а перехваченная ошибка помещается в $@.
 (она при этом совершенно не обязана быть текстовой строкой, а может быть
 например объектом). Если мы собираемся выполнять действия, аналогичные
 finally, а потом ошибку выкидывать обратно, то следует делать так:
 
 eval {
   ....
 }
 my $saved_exception= $_
 ... #здесь мы делаем то, что должно было быть  finally
 die $saved_exception.
 
 Использование переменной для сохранения ошибки рекомендуется потому, что
 мы не можем быть уверены в том, что внутри функции, вызыванной из нашего
 блока finally,  нет своего eval, который переопределит (а скорее всего
 очистит) $@
 -- 
 Машина должна работать, а человек думать. Дважды. Прежде чем ее
 выключить и развинтить.
 --- ifmail v.2.15dev5
  * Origin: Free Net of Leninsky,45 (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 try {}   Alexander Kulik   18 Sep 2002 14:05:36 
 Re: try {}   Andrey Sapozhnikov   18 Sep 2002 19:11:46 
 try {}   Bulat Ziganshin   18 Sep 2002 19:47:25 
 try {}   Serguei Trouchelle   18 Sep 2002 18:06:06 
 Re: try {}   Victor Wagner   18 Sep 2002 22:13:40 
 try {}   Serguei Trouchelle   19 Sep 2002 11:13:11 
 Re: try {}   Konstantin Stupnik   19 Sep 2002 07:06:58 
 try {}   Bulat Ziganshin   18 Sep 2002 23:27:42 
 Re: try {}   Victor Wagner   19 Sep 2002 09:40:28 
 Re: try {}   Eugene Karpachov   18 Sep 2002 21:54:54 
Архивное /ru.perl/15178a49ac4a9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional