Да, вы можете заставить g ++ игнорировать бросок с помощью:
#define throw(x)
В остальном вам нужно изменить код компилятора или создать собственный скрипт / программу в процессе сборки, которая проверит эти вещи, это можно легко сделать с помощью regexp.
Edit:
о вашем комментарии, найти иерархию исключений очень просто. используйте регулярное выражение вроде:
class ([^ ]*) : ([^ ]*)
и введите его в хеш, а затем создайте иерархические данные.
Чтобы сопоставить исключения в функциях, которые их генерируют, используйте:
([^\(\s]*)[\s]*([^\)])[\s]*(throw[\s]*\([^\)]*\)){((throw[\s]*[^;])|*)*}
не проверено и может иметь некоторые ошибки, но хорошее место для начала