5.18. Исключительные ситуации (try-catch)

Ссылка на оригинал статьи тут
Haxe позволяет обрабатывать исключительные ситуации  используя синтаксис try/catch.

Если во время работы   try-выражения выполняется  throw , то генерируется исключительная ситуация, которая  может быть обработана любым последующим catch блоком. Эти блоки  состоят из

  • имени переменной которая содержится во вброшенном значении,
  • подробной  аннотации типа которая определяет для каких типов значений генерировать исключительные ситуации,
  • выражение которое будет исполняться в этом случае

Haxe позволяет сгенерировать исключительную ситуацию (throw) и обработать (catch) любой тип значения. Он не ограничен типами, наследованными от класса exception или  класса error. Блоки catch проверяются сверху вниз, с первого чей тип поддерживается или чье вброшенное значение будет обработано.

Этот процесс имеет много общего с поведением унификации во время компиляции. ( ссылка).
Однако, поскольку проверка должна быть выполнена во время выполнения, существует несколько ограничений:

Тип Dynamic может обрабатывать любое исключение.

Пример моего кода

Try Haxe!

6 thoughts on “5.18. Исключительные ситуации (try-catch)

  1. — Укажите 5.18 в названии и сделайте это постоянной ссылкой.
    — Это «https://haxe.org/manual/expression-try-catch.html» не ссылка. А это — ссылка.
    — «ловить значение»? Прочтите, пожалуйста, в любом учебнике программирования или в Википедии статью про обработку исключительных ситуаций. Это поможет Вам найти правильные обороты речи и термины.
    — «в течении выполнения», «сжимается рамками» и т.п. Вы же не гугл-переводчик — используйте человеческие обороты.
    — Ссылки давайте на на английский учебник, а на страницы этого сайта.
    — Где примеры вашего кода?

    • Если бы 🙂
      Давайте теперь поставим правильно пробелы — обязательно посмотрите как это делается.
      — Нужна ссылка для запуска кода. Но этот код не сможет выполниться из-за ошибок.
      — Ссылки давайте на на английский учебник, а на страницы этого сайта.
      — «переменной имя которой содержится в thrown значении» — даже гугл-переводчик правильно перевел 🙂 А у Вас какая-то бессмыслица вышла.
      — Может thrown = вбрасываемое, вброшенное?
      — После слов «Этот процесс» снова идет бессмыслица. Обычный текст «exist at runtime» = «существует в момент выполнения» Вы превращаете в бессмыслицу. Да и унификация это не объединение. Посмотрите, пожалуйста, внимательно.

Добавить комментарий