Это нормально. У нас и hello world через макрос.
Реализация конструкции catch, которую ты написал, выполняет задачу, но является далеко не оптимальной, так как создаёт лишний тип, лишнюю структуру, лишний вызов функции, которые не нужны в оптимальной реализации.
Конечно, наверное, это всё инлайнится и никаких вызовов в рантайме не будет, но полагаться на оптимизатор — плохая идея, ведь он ничего не гарантирует