Вася разрабатывает свой язык программирования VPL (Vasya Programming Language). Сейчас он занят созданием системы исключений. В его представлении система исключений должна функционировать следующим образом.
Для обработки исключений используются try-catch-блоки. Работа с блоками осуществляется при помощи двух операторов:
- Оператор try. Открывает новый try-catch-блок.
- Оператор catch(<тип_исключения>, <сообщение>). Закрывает еще не закрытый try-catch-блок, который был начат последним. Данный блок может быть активирован только исключением типа <тип_исключения>. При активации этого блока, на экран выводится <сообщение>. Если в данный момент не открыто ни одного try-catch-блока, то оператор catch использовать нельзя.
Исключения могут возникать в программе только в одном случае: при использовании оператора throw. Оператор throw(<тип_исключения>) создает исключение указанного типа.
Пусть в результате вызова какого-то оператора throw в программе возникло исключение типа a. В этом случае активируется try-catch-блок такой, что оператор try этого блока описан в программе раньше, чем вызванный оператор throw, при этом оператору catch этого блока в качестве параметра передан тип исключения a, и оператор catch этого блока описан позже, чем вызванный оператор throw. Если таких try-catch-блоков несколько, активируется тот блок, описание оператора catch которого встречается раньше всех. Если ни один try-catch-блок не был активирован, то на экран выводится сообщение «Unhandled Exception».
Для тестирования системы, Вася составил программу, в которой содержатся только операторы try, catch и throw, в одной строке находится не более одного оператора, во всей программе присутствует ровно один оператор throw.
Ваша задача в том, чтобы по программе на VPL определить, какое сообщение будет выведено на экран.
Выходные данные
Выведите сообщение, которое будет написано на экране после выполнения заданной программы.
Примечание
В первом примере существует 2 try-catch блока, для которых оператор try описан раньше оператора throw, а оператор catch описан позже оператора throw: try-catch(BE,"BE in line 3") и try-catch(AE,"AE somewhere"). Тип исключения AE, а значит будет активирован второй блок, так как в операторе catch(AE,"AE somewhere") указан тип исключения AE, а в операторе catch(BE,"BE in line 3") указан тип BE.
Во втором примере существует 2 try-catch блока, для которых оператор try описан раньше оператора throw, а оператор catch описан позже оператора throw: try-catch(AE,"AE in line 3") и try-catch(AE,"AE somewhere"). В данном случае оба блока могут быть активированы исключением типа AE, но будет активирован только блок try-catch(AE,"AE in line 3"), так как оператор catch(AE,"AE in line 3") описан раньше, чем catch(AE,"AE somewhere").
В третьем примере не существует блоков, способных обработать исключение типа CE.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
8 try try throw ( AE ) catch ( BE, "BE in line 3") try catch(AE, "AE in line 5") catch(AE,"AE somewhere")
|
AE somewhere
|
|
2
|
8 try try throw ( AE ) catch ( AE, "AE in line 3") try catch(BE, "BE in line 5") catch(AE,"AE somewhere")
|
AE in line 3
|
|
3
|
8 try try throw ( CE ) catch ( BE, "BE in line 3") try catch(AE, "AE in line 5") catch(AE,"AE somewhere")
|
Unhandled Exception
|