Skip to content

Commit 0669af2

Browse files
committed
Simplified sqlite_exception construction
1 parent 8a461e7 commit 0669af2

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed

hdr/sqlite_modern_cpp.h

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ namespace sqlite {
3030

3131
class sqlite_exception: public std::runtime_error {
3232
public:
33-
sqlite_exception(const char* msg, char code): runtime_error(msg), code(code) {}
33+
sqlite_exception(const char* msg, char code = -1): runtime_error(msg), code(code) {}
34+
sqlite_exception(char code): runtime_error(sqlite3_errstr(code)), code(code) {}
3435
char get_code() {return code;}
3536
private:
3637
char code;
@@ -74,33 +75,33 @@ namespace sqlite {
7475
class no_rows: public sqlite_exception { using sqlite_exception::sqlite_exception; };
7576

7677
static void throw_sqlite_error(const int& error_code) {
77-
if(error_code == SQLITE_ERROR) throw exceptions::error(sqlite3_errstr(error_code), error_code);
78-
else if(error_code == SQLITE_INTERNAL) throw exceptions::internal (sqlite3_errstr(error_code), error_code);
79-
else if(error_code == SQLITE_PERM) throw exceptions::perm(sqlite3_errstr(error_code), error_code);
80-
else if(error_code == SQLITE_ABORT) throw exceptions::abort(sqlite3_errstr(error_code), error_code);
81-
else if(error_code == SQLITE_BUSY) throw exceptions::busy(sqlite3_errstr(error_code), error_code);
82-
else if(error_code == SQLITE_LOCKED) throw exceptions::locked(sqlite3_errstr(error_code), error_code);
83-
else if(error_code == SQLITE_NOMEM) throw exceptions::nomem(sqlite3_errstr(error_code), error_code);
84-
else if(error_code == SQLITE_READONLY) throw exceptions::readonly(sqlite3_errstr(error_code), error_code);
85-
else if(error_code == SQLITE_INTERRUPT) throw exceptions::interrupt(sqlite3_errstr(error_code), error_code);
86-
else if(error_code == SQLITE_IOERR) throw exceptions::ioerr(sqlite3_errstr(error_code), error_code);
87-
else if(error_code == SQLITE_CORRUPT) throw exceptions::corrupt(sqlite3_errstr(error_code), error_code);
88-
else if(error_code == SQLITE_NOTFOUND) throw exceptions::notfound(sqlite3_errstr(error_code), error_code);
89-
else if(error_code == SQLITE_FULL) throw exceptions::full(sqlite3_errstr(error_code), error_code);
90-
else if(error_code == SQLITE_CANTOPEN) throw exceptions::cantopen(sqlite3_errstr(error_code), error_code);
91-
else if(error_code == SQLITE_PROTOCOL) throw exceptions::protocol(sqlite3_errstr(error_code), error_code);
92-
else if(error_code == SQLITE_EMPTY) throw exceptions::empty(sqlite3_errstr(error_code), error_code);
93-
else if(error_code == SQLITE_SCHEMA) throw exceptions::schema(sqlite3_errstr(error_code), error_code);
94-
else if(error_code == SQLITE_TOOBIG) throw exceptions::toobig(sqlite3_errstr(error_code), error_code);
95-
else if(error_code == SQLITE_CONSTRAINT) throw exceptions::constraint(sqlite3_errstr(error_code), error_code);
96-
else if(error_code == SQLITE_MISMATCH) throw exceptions::mismatch(sqlite3_errstr(error_code), error_code);
97-
else if(error_code == SQLITE_MISUSE) throw exceptions::misuse(sqlite3_errstr(error_code), error_code);
98-
else if(error_code == SQLITE_NOLFS) throw exceptions::nolfs(sqlite3_errstr(error_code), error_code);
99-
else if(error_code == SQLITE_AUTH) throw exceptions::auth(sqlite3_errstr(error_code), error_code);
100-
else if(error_code == SQLITE_FORMAT) throw exceptions::format(sqlite3_errstr(error_code), error_code);
101-
else if(error_code == SQLITE_RANGE) throw exceptions::range(sqlite3_errstr(error_code), error_code);
102-
else if(error_code == SQLITE_NOTADB) throw exceptions::notadb(sqlite3_errstr(error_code), error_code);
103-
else throw sqlite_exception(sqlite3_errstr(error_code), error_code);
78+
if(error_code == SQLITE_ERROR) throw exceptions::error(error_code);
79+
else if(error_code == SQLITE_INTERNAL) throw exceptions::internal (error_code);
80+
else if(error_code == SQLITE_PERM) throw exceptions::perm(error_code);
81+
else if(error_code == SQLITE_ABORT) throw exceptions::abort(error_code);
82+
else if(error_code == SQLITE_BUSY) throw exceptions::busy(error_code);
83+
else if(error_code == SQLITE_LOCKED) throw exceptions::locked(error_code);
84+
else if(error_code == SQLITE_NOMEM) throw exceptions::nomem(error_code);
85+
else if(error_code == SQLITE_READONLY) throw exceptions::readonly(error_code);
86+
else if(error_code == SQLITE_INTERRUPT) throw exceptions::interrupt(error_code);
87+
else if(error_code == SQLITE_IOERR) throw exceptions::ioerr(error_code);
88+
else if(error_code == SQLITE_CORRUPT) throw exceptions::corrupt(error_code);
89+
else if(error_code == SQLITE_NOTFOUND) throw exceptions::notfound(error_code);
90+
else if(error_code == SQLITE_FULL) throw exceptions::full(error_code);
91+
else if(error_code == SQLITE_CANTOPEN) throw exceptions::cantopen(error_code);
92+
else if(error_code == SQLITE_PROTOCOL) throw exceptions::protocol(error_code);
93+
else if(error_code == SQLITE_EMPTY) throw exceptions::empty(error_code);
94+
else if(error_code == SQLITE_SCHEMA) throw exceptions::schema(error_code);
95+
else if(error_code == SQLITE_TOOBIG) throw exceptions::toobig(error_code);
96+
else if(error_code == SQLITE_CONSTRAINT) throw exceptions::constraint(error_code);
97+
else if(error_code == SQLITE_MISMATCH) throw exceptions::mismatch(error_code);
98+
else if(error_code == SQLITE_MISUSE) throw exceptions::misuse(error_code);
99+
else if(error_code == SQLITE_NOLFS) throw exceptions::nolfs(error_code);
100+
else if(error_code == SQLITE_AUTH) throw exceptions::auth(error_code);
101+
else if(error_code == SQLITE_FORMAT) throw exceptions::format(error_code);
102+
else if(error_code == SQLITE_RANGE) throw exceptions::range(error_code);
103+
else if(error_code == SQLITE_NOTADB) throw exceptions::notadb(error_code);
104+
else throw sqlite_exception(error_code);
104105
}
105106
}
106107

@@ -187,11 +188,11 @@ namespace sqlite {
187188
if((hresult = sqlite3_step(_stmt.get())) == SQLITE_ROW) {
188189
call_back();
189190
} else if(hresult == SQLITE_DONE) {
190-
throw exceptions::no_rows("no rows to extract: exactly 1 row expected", -1);
191+
throw exceptions::no_rows("no rows to extract: exactly 1 row expected");
191192
}
192193

193194
if((hresult = sqlite3_step(_stmt.get())) == SQLITE_ROW) {
194-
throw exceptions::more_rows("not all rows extracted", -1);
195+
throw exceptions::more_rows("not all rows extracted");
195196
}
196197

197198
if(hresult != SQLITE_DONE) {

0 commit comments

Comments
 (0)