|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergey Skvortsov 2:5020/400 13 Nov 2003 20:56:34 To : Mikhail Polykovsky Subject : Re: Re[2]: Hаследование? -------------------------------------------------------------------------------- Mikhail Polykovsky пишет: SS>> то что ты хочешь - странно и противоестественно, MP> А почему? (хоть в мыло напиши, если здесь оффтопик). Я просто хочу MP> создать несколько классов, умеющих внятно объяснить, что с ними MP> приключилось. Посоветуешь другой вариант? ты смешиваешь ошибки класса и ошибки объекта класса. первое - нечто дикое. ошибки у класса это когда в new() передана какая-то фигня? тогда два варианта: 1. кидаем exception - например по croak - и ловим внешним eval {} my $c; eval { $c=Clone->new(); }; die "wow! ",$@ if $@; 2. возвращаем undef - и детектим по проверке результата my $c=Clone->new(); die "yo! can't create an instance of Child" unless defined $c; В общем случае exception'ы имеют больший overhead нежели проверка результата - но для проверки корректности аргументов функции/метода следует применять скорее их. Хранить в классе/объекте аналог C-шного errno (как у тебя) - чревато. Хотя бы тем, что его надо очищать после/внутри каждого вызова, где он применим. Это просто концептуально неправильно - смешение парадигм. Впрочем, если это run-away скрипт - то пиши как хочешь. Hо коль есть желание сделать что-то для вечности - продумай все еще раз :) Hу и по коду - самостоятельные упражнения: Child->errstr(); Child->set_err('bla-bla-bla'); уж хотя бы проверяй на ref. -- Sergey Skvortsov mailto: skv@protey.ru Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5.1 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/64884c5bdb13.html, оценка из 5, голосов 10
|