Преобразование к логическому значению.
Для численного преобразования объекта используется метод valueOf (возвращающий примитив), а если его нет — то toString:
var room = {
number: 777,
valueOf: function() { return this.number; },
toString: function() { return this.number; }
}
alert( +room ); // 777, вызвался valueOf
delete room.valueOf;
alert( +room ); // 777, вызвался toString
Метод valueOf обязан возвращать примитивное значение, иначе его результат будет проигнорирован. При этом — не обязательно числовое.
У большинства встроенных объектов такого valueOf нет, поэтому численное и строковое преобразования для них работают одинаково.
№23.Основные принципы обработки исключений. Типы исключений.
Все исключительные ситуация можно поделить на 2 категории:
-
обрабатываемые (checked). Все исключения, порожденные от java.lang.Exception. Т.е. Во время компиляции проверяется - предусмотрена ли обработка возможных исключительных ситуаций.
-
не обрабатываемые (unchecked). Порожденные от java.lang.RubTimeException. Компилятор не требует обязательной их обработки.
Как правило, обрабатываемые исключения предназначены для обработки ситуаций, связанных с окружением программы (сетевым, файловым вводом и др.), которые могут возникнуть вне зависимости от того, корректно написан код или нет. Обработка исключений реализуется через создание объекта, представляющего исключение, который вбрасывается в метод, вызвавший ошибку. Ключевые слова для обработки исключений: try, catch, throw, throws, finally.
try{
// фрагмент программы, в котором возможно возникновение ошибки
}
catch (имя_класса_исключения имя_объекта)
{
// обработчик исключения
}
[ finally {
// блок кода обработки перед выходом из try
}
]
№24. Использование операторов try и catch, множественные операторы catch.
Основы
К механизму обработки исключений в Java имеют отношение 5 ключевых слов: — try, catch, throw, throws и finally. Схема работы этого механизма следующая. Вы пытаетесь (try) выполнить блок кода, и если при этом возникает ошибка, система возбуждает (throw) исключение, которое в зависимости от его типа вы можете перехватить (catch) или передать умалчиваемому (finally) обработчику.
Ниже приведена общая форма блока обработки исключений.
try {
// блок кода }
catch (ТипИсключения1 е) {
// обработчик исключений типа ТипИсключения1 }
catch (ТипИсключения2 е) {
// обработчик исключений типа ТипИсключения2
throw(e) // повторное возбуждение исключения }
finally {
}
try и catch
Для задания блока программного кода, который требуется защитить от исключений, используется ключевое слово try. Сразу же после try-блока помещается блок catch, задающий тип исключения которое вы хотите обрабатывать.
class Exc2 {
public static void main(String args[]) {
try {
int d = 0;
int a = 42 / d;
}
catch (ArithmeticException e) {
System.out.println("division by zero");
}
} }
Целью большинства хорошо сконструированных catch-разделов должна быть обработка возникшей исключительной ситуации и приведение переменных программы в некоторое разумное состояние — такое, чтобы программу можно было продолжить так, будто никакой ошибки и не было (в нашем примере выводится предупреждение – division by zero).