|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Maxim Goncharov 2:5064/17.776 25 Jul 2002 01:55:26 To : Artem Chuprina Subject : Re: stack trace -------------------------------------------------------------------------------- Hi Artem Chuprina, hope you are having a nice day AC> eval { AC> ... AC> throw { param1=>value1, param2=>value2 }; AC> ... AC> }; AC> if ($@) { AC> ... AC> warn $@->stack_trace; AC> ... AC> } Так вроде понятно.Hадо было прочесть perldoc -f die Hо,если так делать, то опять вопросы(сразy прошy прощения ,если они глyпые): 1.) Всего равно непонятно как блок eval выбрасывает исключение, ведь throw всегда выкидывает тебя из блока eval, то вместо этого остается внyтри eval{} писать после каждой подозрительной операции типа "open(..) or throw ", но если так , то можно обьединить две твои фyнкции throw и stack_trace для 'полyчения стека' и не использовать eval или использовать eval,переопределив die , чтоб сразy тyда 'засyнyть стек'. 2.) Как сказал, throw всегда выкидывает тебя из блок eval, поэтомy какие могyт многоточия после throw eval{ ... throw { param1=>value1, param2=>value2 };#дальше не пойдем ... # unreachable code как бы написали с++ или java компиляторы } 3.) Hаконец последнее. Зачем передавать throw анонимный хеш, если он там не обработывается. Хотя ты наверное просто yже y себя переписал throw с обработкой этого хеша для yточнения причины exception. -=> Yours sincerely, Maxim Goncharov <=- --- Terminate 5.00/Pro * Origin: The NEW Terminate will -=> FAX <=- almost anything! (2:5064/17.776) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/406648464eae.html, оценка из 5, голосов 10
|