| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #include <pqxx/except>
- #include <pqxx/transaction>
- #include "../test_helpers.hxx"
- namespace
- {
- void test_exceptions()
- {
- std::string const broken_query{"SELECT HORRIBLE ERROR"},
- err{"Error message"};
- try
- {
- throw pqxx::sql_error{err, broken_query};
- }
- catch (std::exception const &e)
- {
- PQXX_CHECK_EQUAL(e.what(), err, "Exception contains wrong message.");
- auto downcast{dynamic_cast<pqxx::sql_error const *>(&e)};
- PQXX_CHECK(
- downcast != nullptr, "exception-to-sql_error downcast is broken.");
- PQXX_CHECK_EQUAL(
- downcast->query(), broken_query,
- "Getting query from pqxx exception is broken.");
- }
- pqxx::connection conn;
- pqxx::work tx{conn};
- try
- {
- tx.exec("INVALID QUERY HERE");
- }
- catch (pqxx::syntax_error const &e)
- {
- // SQL syntax error has sqlstate error 42601.
- PQXX_CHECK_EQUAL(
- e.sqlstate(), "42601", "Unexpected sqlstate on syntax error.");
- }
- }
- PQXX_REGISTER_TEST(test_exceptions);
- } // namespace
|