В bad_alloc
нет ничего особенного, вы можете поймать его или нет, как и любое другое исключение. необычно ловить его. Вы сделали бы это, только если бы у вас был какой-то способ восстановления после нехватки памяти. Но я думаю, что программы, предназначенные для устранения ошибок нехватки памяти, чаще используют вместо nothrow
версию new
:
pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
// NO MEMORY!
}