Перехват ошибок. Конструкция "try..catch"

Автор: Никита Шилов Дата . Написано Учебные материалы - Adobe After Effect

try and catch

Как я уже говорил в предыдущем видео уроке, конструкция try..catch в выражениях After Effects, выполняет функцию обработки ошибок. В этой статье напишу более подробно про эту функцию.

Ошибки бывают двух типов, это синтакcические ошибки (нарушение структуры кода, пропуск точек, запятых, скобок) и семантические ошибки (ошибки времени выполнения, когда код запускается, но встречает проблему, пропущенную переменную, отсутствие необходимых маркеров или ключевых кадров). Такие ошибки можно «перехватить» и сделать так, чтобы окно об ошибки в After Effects не появлялось. Теперь разберем саму конструкцию:

try..catch состоит из двух основных блоков – это try, и catch. Сначала выполняется код внутри блока try, если в нем возникает ошибка, то выполнение try прерывается, и запускается блок catch.

Синтаксис блока:

try {

                // код

}

catch (err) {

    // код

}

Блок catch имеет аргумент который обозначен как err. Это – объект ошибки или объект исключения, который содержит информацию о том, что произошло. Обычно err – объект встроенного типа Error и производных от него.

Разберем пример из прошлого урока:

try {

 

t=thisComp.marker.key(1).time; // находим время первого маркера;

if(t>=time)  {  // если время маркера больше или равняется текущему времени

100

} else 25

}

catch(err){value}

В этом примере мы получим ошибку в том случае, если маркеры в композиции не проставлены. Если маркеров в композиции нет, то блок try опускается, и идет выполнение блока catch, в данном случае мы просто возвращаем исходное значение value параметру, к которому было применено это выражение. Вместо value вы можете написать любое другое значение, например 100, в этом случае значение, при получение ошибки, всегда будет равняться стам. 


Смотрите также:
Похожие статьи:
Не пропустите:


У Вас недостаточно прав для добавления комментариев.
Регистрируемся,а потом можно будет писать.

Популярное в АЕ: