|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergey Velikanov 2:5020/400 07 Nov 2006 21:47:25 To : All Subject : Обработка ошибок в классах -------------------------------------------------------------------------------- Добрый день Есть у меня класс Filter который работает с базой данных, у него есть метод save sub save { my $self = shift; ... my $sth = $dbh->do("update filters set filter_name=$filter_name .... if ($DBI::err) { $self->{ERROR} = $DBI::err; $self->{ERROR_STR} = $DBI::errstr; } } sub error { my $self = shift; return $self->{ERROR}; } sub error_str { my $self = shift; return $self->{ERROR_STR}; } те по задумке, если возникнет ошибка то я смогу ее позже распознать по $filter->error, что реализовано след образом $filter->save(); push @error_str,$filter->errstr if ($filter->error); .... print_error(@error_str) но на деле получается, что если ошибка в sql то в лог апача вываливается [Tue Nov 07 19:49:13 2006] [error] [client 192.168.125.100] DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[skip]' at line 1 at ../CP/Filter.pm line 81., referer: http://192.168.125.21/filter/filters_edit.pl [Tue Nov 07 19:49:13 2006] [error] [client 192.168.125.100] Can't locate object method "errstr" via package "Filter" at /var/www/htdocs/filter/filters_edit.pl line 52., referer: http://192.168.125.21/filter/filters_edit.pl и скрипт умирает не выводя сообщение об ошибке, как сделать чтобы он не умирал и мог обработать ошибку? -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5.3 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6488714226a7.html, оценка из 5, голосов 10
|