|
|
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
|