Если я вас правильно понимаю, вы хотите превратить плохую практику в ошибку компиляции.
Сделав тип исключения не подлежащим распределению в куче, вам удалось сделать это недопустимым:
throw new MyExceptionClass();
Увы, следующая часть не может быть выполнена так, как вы этого хотите. Нет никакого способа сделать блок улова незаконным. Хотя, если вы сделали незаконным выделение MyExceptionClass для кучи, вам не нужно беспокоиться о блоках catch. Это просто пустое место.
Если вы хотите, чтобы указатель не перехватывался, вам нужен инструмент, похожий на пух.
Я бы рекомендовал посмотреть на EDoC ++ . Это модифицированный компилятор gcc для проверки правильности использования исключений.