[Moscow.pm] (без темы)
Nikolay Mishin
mi на ya.ru
Ср Ноя 16 07:27:43 PST 2011
Hi Moscow-pm,
perl v5.8.4
Не правда ли получается кривовато, что при
my $EMPTY = undef;
our ( $start_date, $end_date ) = ( $EMPTY, $EMPTY );
#считываем входные параметры
if ( ( $start_date ne '' ) && ( $end_date ne '' ) ) {
my $RGX_DATE_FULL = qr{.*(\d{2}-\w{3}-\d{4}).*}smo;
}
то возможен
Use of uninitialized value in string ne at Search.pm line 227.
и приходиться инициализировать строки пробелами
my $SPACE = q{ };
our ( $start_date, $end_date ) = ( $SPACE, $SPACE );
if ( ( $start_date ne ' ' ) && ( $end_date ne ' ' ) ) {
my $RGX_DATE_FULL = qr{.*(\d{2}-\w{3}-\d{4}).*}smo;
}
из
В принципе я уже все решил, просто крик души,
видимо нужно больше писать тестов и тогда меньше будет вылетать неожиданных ошибок
все-таки как удобно в pl-sql обрабатывать ошибки:
DECLARE
pe_ratio NUMBER(3,1);
BEGIN
SELECT price / earnings INTO pe_ratio FROM stocks
WHERE symbol = 'XYZ'; -- might cause division-by-zero error
INSERT INTO stats (symbol, ratio) VALUES ('XYZ', pe_ratio);
COMMIT;
EXCEPTION -- exception handlers begin
WHEN ZERO_DIVIDE THEN -- handles 'division by zero' error
INSERT INTO stats (symbol, ratio) VALUES ('XYZ', NULL);
COMMIT;
...
WHEN OTHERS THEN -- handles all other errors
ROLLBACK;
END; -- exception handlers and block end here
--
здесь я тоже понимаю, что нужно
use Try::Tiny;
# handle errors with a catch handler
try {
if ( ( $start_date ne ' ' ) && ( $end_date ne ' ' ) ) {
my $RGX_DATE_FULL = qr{.*(\d{2}-\w{3}-\d{4}).*}smo;
}
}
catch {
warn "caught error: $_ \$start_date:*$start_date* \$end_date:*$end_date*"
; # not $@
};
но какая лень берет покрывать весь модуль такими штуками, утешает лишь то, что
это приходиться делать только с местами, где находится ошибка (а их ограниченное количество)
Nikolay Mishin
Подробная информация о списке рассылки Moscow-pm