title: New (std::nothrow) vs. New within a try/catch block
body: <p>I did some research after learning <code>new</code>, unlike <code>malloc()</code> which I am used to, does not return NULL for failed allocations, and found there are two distinct ways of checking whether new had succeeded or not.  Those two ways are:</p>
  
  <pre><code>try
  {
      ptr = new int[1024];
  }
  catch(std::bad_alloc&amp; exc)
  {
      assert();
  };
  </code></pre>
  
  <p>and</p>
  
  <pre><code>ptr = new (std::nothrow) int[1024];
  if(ptr == NULL) 
      assert();
  </code></pre>
  
  <p>I believe the two ways accomplish the same goal, (correct me if I am wrong of course!), so my question is this:</p>
  
  <p>which is the better option for checking if <code>new</code> succeeded, based entirely on readability, maintainability, and performance, while disregarding de-facto c++ programming convention. </p>