C++ではインスタンスxのコンストラクタ内で例外が発生した場合、
xのデストラクタは呼ばれない(理由は>>91の通り
という言語仕様なのは真実なので、逃げ手としてnewに細工がしてあるだけの話

生のハンドルとかはこれそのものでは救えない。
コンストラクタで生のハンドルを確保するコードを普通に書いたら、コンストラクタが例外を生じたときにリークする

それを避けるための正しいテクニックは、
1) きちんとハンドル(リソース)のwrapperを書いて、
2) そいつをxのメンバにしとく
である(メンバのデストラクタは、xのコンストラクタが例外を生じても呼ばれる

んまー常識的には「コンストラクタで例外を発生させない」とか「例外が発生したら諦める」設計のが
特殊な用途以外では普通な希ガス、