Показать сообщение отдельно
  #52 (permalink)  
Старый 08.11.2015, 01:33
Профессор
Посмотреть профиль Найти все сообщения от Mаxmaxmаximus
 
Регистрация: 29.10.2015
Сообщений: 473

Давай лучше пример напишу другой

function getByIndex(array, index){
    unless(index in array) then throw RangeError 'Ошибка чтения с массива'
    return array[index]
}



а дальше используем

item = getByIndex(array, 100)



и вот тут мы думаем, если наша программа предуусматривет что этовполне нормальное поведение что там МОЖЕТ И НЕ БЫТЬ ЭЛЕМЕНТА С ТАКИМ ИНДЕКСОМ, то мы перехватываем это исключение и поступаем так как система должна поступить в таком случае, если же предполагаем что элемнет с таким индексом там ДОЛЖЕН И ОБЯЗАН БЫТЬ, то мы не пишем try catch, а позвозяем ошибке если она появится всплыть и остановить всю программу.

например

try item = getByIndex(array, 100)
catch RangeError:error then item = defaultItem
бла бла бла



вот тут предполагается что мы ловим ТОЛЬКО RangeError который может бросить сгенерировать эта функция, и если там внутри у неё сгенерируются ошибки другого типа, например ошибки работы с памятью "MemoryError" то мы не должны их отлавливать потому что не знаем как они отработают.

Последний раз редактировалось Mаxmaxmаximus, 08.11.2015 в 01:36.
Ответить с цитированием