From: Date: September 20 2007 5:47pm Subject: Getting errnum() in exception? List-Archive: http://lists.mysql.com/plusplus/7032 Message-Id: <5AA52B773286DA4E83B1F2D034FFED37247264@mailexchange.klausatlanta.local> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable I want to catch a dupe key error in my code using con.errnum(). I use exceptions for everything and would like to use them, but the errnum() in the catch is always zero. I assume this is because when the BadQuery exception is constructed calls error() which calls mysql_error() but that clears out the errornum() (mysql_errno()). To get the error number, I have to turn off exceptions. Any tricks to get it to work? If not, adding an unsigned int to the BadQuery exception class and having it call errnum() first would fix it, which I'd be willing to do. Here's a snip that I wanted to work. ... query.reset(); query << "insert into test values (1)"; // one int col, unique key query.execute(); query.reset(); query << "insert into test values (1)"; query.execute(); } catch (const mysqlpp::BadQuery& er) { cerr << "Got errnum of " << con.errnum() << endl; /// <--- always prints zero ... If I turn off exceptions, con.errnum() returns the correct error number. mysqlpp::NoExceptions ne( query ); query << "insert into test values (1)"; query.execute(); unsigned int ret =3D con.errnum(); <-- get 1062, dupe key cerr << con.error() << endl; <-- correct err msg