Grundsätzlich gibt es überhaupt keinen Grund.
Ausnahmeobjekte befinden sich in ihrem eigenen Speicherbereich †, sodass Sie sich keine Gedanken über das Abfangen von Ausnahmen machen müssen, die in temporären Ausdrücken erstellt wurden.
Alles, was Sie tun, ist zu versprechen, dass Sie das Ausnahmeobjekt nicht ändern werden, aber da Ausnahmeobjekte eine unveränderliche Schnittstelle haben sollten ‡ , gibt es hier wirklich nichts Praktisches.
Es könnte jedoch dazu führen, dass Sie sich warm und gemütlich fühlen, wenn Sie es lesen - so ist es für mich!
† Sie haben einen eigenen, speziellen, threadlokalen Stack.
‡ Haftungsausschluss: Boost.Exception unterbricht dies, um funky Sachen zu machen und Ausnahmedetails nach der Konstruktion hinzuzufügen. Aber das ist Hackery!