Could anyone tell me why the program call abort() in the try block?
<p>The program below compiles successfully, yet it fails to run and call the abort() function which throws a message alerting that "This application has requested the Runtime to terminate it in an unusual way. Please contace the application's support team for more information.", Why so?</p>

<pre><code>#include&lt;cstring&gt;
#include&lt;iostream&gt;

using std::string;
using std::endl;
using std::cout;

class ThrowException{

    private:
        string msg;
        int b;
    public:
        ThrowException(string m="Unknown exception",int factor=0) throw(string);        //A

};

ThrowException::ThrowException(string m, int f) throw(string):msg(m),b(f){                 //B
    if(b==1)
        throw "b=1 not allowed.";
}

int main(){

    try{
        ThrowException a("There's nothing wrong.", 1);
    }catch(string e){
        cout&lt;&lt;"The address of e in catch block is "&lt;&lt;&amp;e&lt;&lt;endl;
    }    

}
</code></pre>

<p><img src="http://i.stack.imgur.com/kg6eR.png" alt="Error message"></p>
