Yes, new
can and will throw if allocation fails. This can happen if you run out of memory or you try to allocate a block of memory too large.
You can catch the std::bad_alloc
exception and handle it appropriately. Sometimes this makes sense, other times (read: most of the time) it doesn’t. If, for example, you were trying to allocate a huge buffer but could work with less space, you could try allocating successively smaller blocks.