Почему продолжилось нормальное выполнение после выброса исключения?
можно так интерполировать:

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

когда Нет исключения в блоке try - то выполнение продолжиться За последним блоком catch выполнятся все инструкции в блоке try и выполнение продолжиться за блоком catch

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