mentre guardavo del codice mi sono imbattuto in:
throw /*-->*/new std::exception ("//...
e ho sempre pensato che non hai bisogno / non dovresti usare new
qui.
Qual è il modo corretto, sono entrambi OK, in caso affermativo c'è qualche differenza?
A proposito, da quello che posso vedere mentre "grepping" con PowerShell boost le librerie non usano mai throw new
.
PS inoltre ho trovato del codice CLI che usa throw gcnew
. È ok?
System::Exception
è generalmente un riferimento a un oggetto gestito nell'heap di Garbage Collection. Ho sempre lanciato gcnew
e preso con System::Exception ^
. Ovviamente uso finally
sempre anche in C ++ / CLI, anche se spesso non si mescolano con le eccezioni C ++ nello stesso try
blocco, non sono sicuro del perché.
throw gcnew
sarebbe utile ad es. se vuoi che il codice gestito catturi la tua eccezione. Qualcuno può correggermi su questo?