dlang-community / d2sqlite3

A small wrapper around SQLite for the D programming language
Boost Software License 1.0
75 stars 26 forks source link

SqliteException doesn't appear to be catch-able even in release mode #56

Open mark-summerfield opened 4 years ago

mark-summerfield commented 4 years ago

The code in the tarball tries to catch SqliteExceptions but fails to do so even in release mode. This seems like a bug to me. I understand that some checking can be done at compile time but sometimes one wants to generate the SQL to be used at runtime and wants to catch any problems. prob1.tar.gz

AndrejMitrovic commented 4 years ago

Did you mean to say only instead of even? Because the issue that I see is that an assert is triggered in non-release mode:

https://github.com/biozic/d2sqlite3/blob/0280ef1769f0e0907980a241b9ac68e444a1fbd5/source/d2sqlite3/statement.d#L281

This is normal, because in -release mode asserts are removed, so you get the chance of catching the exception. assert is there to catch programming bugs.

biozic commented 4 years ago

@mark-summerfield The assert is triggered before throwing an exception in non-release mode. But in release mode, an SqliteException should be triggered. Actually it is, on my machine with your own code. Did I miss something?