Код не оформлен в виде тега, "p" не объявлено, кто такие "thrown" и "QMAinWindow" - хз. Не надо возражать что это, дескать, "непринципиально" - в таком свинарнике до "сути" дело просто не доходит.
Чего Вы ловите (QString &) если испустили (char *)? Это не вызов ф-ции, приводить к QString здесь никто не будет. Если исправить эти ошибки Ваш пример заработает, т.е. пока не высовываетесь из обработки события - использовать exception можно как обычно. Другое дело поймать "выше" не сможете, это нормально т.к. откатить назад посланное событие нельзя
Где я должен переопределить QApplication::notify().
"где" = обычное переопределение виртуального метода. Неясно что делать поймав - ну то Вам виднее