|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Victor Wagner 2:5020/400 05 Feb 2003 17:59:45 To : Andrey Sapozhnikov Subject : Re: died at (eval 1) line 1 -------------------------------------------------------------------------------- Andrey Sapozhnikov <sapa@icb.chel.su> wrote: >> >> Hет, в которой из двух сотен таких строк (подсовываемых eval) и в каком месте >> произошла ошибка. В каком месте - die расскажет, а вот в котором из eval... AS> А написать свой eval которому передавать кроме строчки ее ID? типа: AS> sub my_eval { AS> my $id = shift; AS> if (wantarray) { AS> my @res; AS> { AS> local $SIG{__DIE__}; AS> @res = eval @_; AS> } AS> die "ID: $id - $@" if $@; AS> return @res; AS> } Что-то я не въехал. Совсем. call-with-current-continuation в перле по-моему не бывает. Ситуация такая - мы уверены, что компиляция анонимной процедуры пройдет. Пробовали уже. В момент заливки в базу. Там все просто. И сообщение об ошибке корректное там выдается, и курсор в редакторе на место ошибки позиционируется. Речь идет об ошибке, возникающей во время вызова $fr. Каким образом оттуда управление попадет на строчку die "ID $id - $@" ? Хотя... Вот класть в базу строки вида sub { return eval { some_code }; die "id:$@" if ($@); } вместо sub { some_code } мы, наверное, можем себе позволить. AS> и вызывать ее потом вместо eval AS> my $fr = my_eval $id, 'sub { my $test; $test->method() }'; AS> $fr->(); AS> Андрей -- http://www.communiware.ru http://www.ice.ru/~vitus --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1517815c68f99.html, оценка из 5, голосов 10
|