Ссылка на оригинал статьи тут
Haxe позволяет обрабатывать исключительные ситуации используя синтаксис try/catch.
1 2 3 |
try try-expr catch(имя переменной1:Тип1) catch выражение 1 catch(имя переменной2:Тип2) catch выражение 2 |
Если во время работы try-выражения выполняется throw , то генерируется исключительная ситуация, которая может быть обработана любым последующим catch блоком. Эти блоки состоят из
- имени переменной которая содержится во вброшенном значении,
- подробной аннотации типа которая определяет для каких типов значений генерировать исключительные ситуации,
- выражение которое будет исполняться в этом случае
Haxe позволяет сгенерировать исключительную ситуацию (throw) и обработать (catch) любой тип значения. Он не ограничен типами, наследованными от класса exception или класса error. Блоки catch проверяются сверху вниз, с первого чей тип поддерживается или чье вброшенное значение будет обработано.
Этот процесс имеет много общего с поведением унификации во время компиляции. ( ссылка).
Однако, поскольку проверка должна быть выполнена во время выполнения, существует несколько ограничений:
- Тип должен существовать в момент выполнения (runtime): Class instances, enum instances, abstract core types и Dynamic.
- Параметры типа могут быть только Dynamic.
Тип Dynamic может обрабатывать любое исключение.
Пример моего кода
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Test { static function main() { try { var a = 9; throw "Error";//обработано будет первое (throw) исключение первым обработчиком(catch) throw a; } catch(e:String) { //обработка строки Error trace(e); } catch(b:Dynamic) { trace(b); } } |
- A334(а). Вложенная сумма - 31.03.2017
- А58б. Нахождение значения функции - 31.03.2017
- ML28. Объём тетраэдра - 26.03.2017
— Укажите 5.18 в названии и сделайте это постоянной ссылкой.
— Это «https://haxe.org/manual/expression-try-catch.html» не ссылка. А это — ссылка.
— «ловить значение»? Прочтите, пожалуйста, в любом учебнике программирования или в Википедии статью про обработку исключительных ситуаций. Это поможет Вам найти правильные обороты речи и термины.
— «в течении выполнения», «сжимается рамками» и т.п. Вы же не гугл-переводчик — используйте человеческие обороты.
— Ссылки давайте на на английский учебник, а на страницы этого сайта.
— Где примеры вашего кода?
Исправил и учел все недочеты
Если бы 🙂
Давайте теперь поставим правильно пробелы — обязательно посмотрите как это делается.
— Нужна ссылка для запуска кода. Но этот код не сможет выполниться из-за ошибок.
— Ссылки давайте на на английский учебник, а на страницы этого сайта.
— «переменной имя которой содержится в thrown значении» — даже гугл-переводчик правильно перевел 🙂 А у Вас какая-то бессмыслица вышла.
— Может thrown = вбрасываемое, вброшенное?
— После слов «Этот процесс» снова идет бессмыслица. Обычный текст «exist at runtime» = «существует в момент выполнения» Вы превращаете в бессмыслицу. Да и унификация это не объединение. Посмотрите, пожалуйста, внимательно.
Вроде все исправил.И сделал граватар
Ох…
Теперь давайте расставим пробелы в Вашем предыдущем комментарии 🙁
Кирилл, я действительно не зачту работу, пока вы не разберётесь, где в тексте принято ставить пробелы, а где нет.