Вы корректны.
исключения Непроверенные используются для разрешения системе сбой быстро , который является хорошей вещью. Необходимо ясно заявить, что является методом, ожидающим для работы правильно. Таким образом, можно проверить вход только однажды.
, Например:
/**
* @params operation - The operation to execute.
* @throws IllegalArgumentException if the operation is "exit"
*/
public final void execute( String operation ) {
if( "exit".equals(operation)){
throw new IllegalArgumentException("I told you not to...");
}
this.operation = operation;
.....
}
private void secretCode(){
// we perform the operation.
// at this point the opreation was validated already.
// so we don't worry that operation is "exit"
.....
}
Только для помещения примера. Точка, если система перестанет работать быстро, то Вы будете знать, где и почему это действительно перестало работать. Вы получите stacktrace как:
IllegalArgumentException: I told you not to use "exit"
at some.package.AClass.execute(Aclass.java:5)
at otherPackage.Otherlass.delegateTheWork(OtherClass.java:4569)
ar ......
И Вы будете знать то, что произошло. OtherClass в "delegateTheWork" методе (в строке 4569) названный Вашим классом со значением "выхода", даже когда это не было должно и т.д.
Иначе, необходимо будет опрыснуть проверки на всем протяжении кода, и это подвержено ошибкам. Плюс, иногда трудно отследить то, что пошло не так, как надо, и можно ожидать часы срыва отладки
, То же самое происходит с NullPointerExceptions. Если у Вас есть 700 классов строк приблизительно с 15 методами, которые используют 30 атрибутов, и ни один из них не может быть пустым, вместо того, чтобы проверить в каждом из тех методов для nullability, Вы могли сделать все те атрибуты только для чтения и проверить их в методе конструктора или методе фабрики.
public static MyClass createInstane( Object data1, Object data2 /* etc */ ){
if( data1 == null ){ throw NullPointerException( "data1 cannot be null"); }
}
// the rest of the methods don't validate data1 anymore.
public void method1(){ // don't worry, nothing is null
....
}
public void method2(){ // don't worry, nothing is null
....
}
public void method3(){ // don't worry, nothing is null
....
}
Контролируемые исключительные ситуации полезны, когда программист (Вы или Ваши коллеги) сделал все правильно, проверил вход, запустил тесты, и весь код прекрасен, но подключения кода к стороннему веб-сервису, который может снизиться (или файл Вы использовали, были удалены другим внешним процессом и т.д.). Веб-сервис может даже быть, проверяют, прежде чем соединение предпринято, но во время передачи данных что-то пошло не так, как надо.
В том сценарии нет ничего, что Вы или Ваши коллеги можете сделать для помощи ему. Но тем не менее необходимо сделать что-то и не позволить приложению просто умереть и исчезнуть в глазах пользователя. Вы используете контролируемую исключительную ситуацию для этого и обрабатываете исключение, что можно сделать, когда это происходит?, большую часть времени, только чтобы попытаться зарегистрировать ошибку, вероятно, сохраните свою работу (работа приложения) и представьте сообщение пользователю. (Сайт blabla снижается, повторите позже и т.д.)
, Если контролируемая исключительная ситуация злоупотребляется (путем добавления, "выдают Исключение" во всех подписях методов), то код станет очень хрупким, потому что все проигнорируют то исключение (потому что является слишком общим), и качество кода серьезно поставится под угрозу.
при злоупотреблении неконтролируемого исключения что-то подобное произойдет. Пользователи того кода не знают, может ли что-то пойти не так, как надо большая попытка {...} Выгода (Throwable t) появится.
Объектно-ориентированный Perl Дэмиана Конвея состоит из двух основных глав и всего исходного кода в сети.
Поскольку это вики сообщества и в духе вашего примечания:
perlboot теперь устарел и перенаправлен на:
perlootut - объектно-ориентированное программирование в Perl Tutorial
perlobj - ссылка на объект Perl
Если вы новичок в Perl, в этом руководстве также предлагается прочитать о подпрограммах , ссылках и модулях .
Я большой поклонник материалов, доступных на веб-сайте Perl Training Australia .
У них есть вводное руководство, а также полноразмерная книга -длительное лечение:
Все их учебные материалы и советы стоит посмотреть.
Хотя это не учебник, я бы посоветовал прочитать и поработать с примерами Изучение объектов Perl, ссылки & Modules , которая является второй книгой из серии "Learning Perl" Рэндала Шварца.
Эта книга - отличное введение в объекты Perl.
Кстати, я предпочитаю эту версию более позднему изданию, которое также было предоставлено более общее название "Intermediate Perl". И, как дополнительный бонус, бывшая в употреблении копия старой версии намного меньше новой. (-:
Редактировать:
Есть пара объектно-ориентированных руководств в документации Perl. Ознакомьтесь с документацией perltoc . perldoc.perl.org имеет страницу со списком всех руководств по Perl в документации .
На tobez.org довольно хорошая репутация . Он не охватывает Moose, но дает хороший обзор «классических» методов, а также включает модули и методы CPAN, такие как благословение необычных ссылок и объектов, вывернутых наизнанку.
Запуск объектно-ориентированного программирования с Perl в Suite 101 - это плохо по ряду причин, и его следует избегать.
Почему учебник плохой:
print
, где список аргументов будет работать лучше (или еще лучше join
).