diff --git a/simplest-sqlite.cabal b/simplest-sqlite.cabal
--- a/simplest-sqlite.cabal
+++ b/simplest-sqlite.cabal
@@ -2,7 +2,7 @@
 cabal-version: >= 1.8
 
 name: simplest-sqlite
-version: 0.0.0.11
+version: 0.0.0.12
 stability: Experimental
 author: YoshikuniJujo <PAF01143@nifty.ne.jp>
 maintainer: YoshikuniJujo <PAF01143@nifty.ne.jp>
@@ -23,13 +23,14 @@
 source-repository this
     type: git
     location: git://github.com/YoshikuniJujo/test_haskell
-    tag: simplest-sqlite-0.0.0.11
+    tag: simplest-sqlite-0.0.0.12
 
 library
     hs-source-dirs: src
-    exposed-modules: Database.SmplstSQLite3
+    exposed-modules: Database.SmplstSQLite3, Database.SmplstSQLite3.Exception
     other-modules:
-        Database.SmplstSQLite3.Constants, Database.SmplstSQLite3.Templates
+        Database.SmplstSQLite3.Constants, Database.SmplstSQLite3.Templates,
+        Database.SmplstSQLite3.Exception.Internal
     build-depends:
         base == 4.*, bytestring == 0.10.*, text >= 1.1 && < 1.3,
         exception-hierarchy == 0.0.0.1, template-haskell == 2.9.*
diff --git a/src/Database/SmplstSQLite3.hs b/src/Database/SmplstSQLite3.hs
--- a/src/Database/SmplstSQLite3.hs
+++ b/src/Database/SmplstSQLite3.hs
@@ -18,7 +18,7 @@
 import Foreign.C.Types
 import Foreign.C.String
 
-import Database.SmplstSQLite3.Exception
+import Database.SmplstSQLite3.Exception.Internal
 import Database.SmplstSQLite3.Constants
 
 data SQLite = SQLite (Ptr SQLite) deriving Show
diff --git a/src/Database/SmplstSQLite3/Exception.hs b/src/Database/SmplstSQLite3/Exception.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/SmplstSQLite3/Exception.hs
@@ -0,0 +1,118 @@
+module Database.SmplstSQLite3.Exception (
+	SQLiteException(..),
+
+	SQLITE_ERROR(..),
+	SQLITE_INTERNAL(..),
+	SQLITE_PERM(..),
+
+	SQLITE_ABORT(..),
+	SQLITE_ABORT_PLAIN(..),
+	SQLITE_ABORT_ROLLBACK(..),
+
+	SQLITE_BUSY(..),
+	SQLITE_BUSY_PLAIN(..),
+	SQLITE_BUSY_RECOVERY(..),
+	SQLITE_BUSY_SNAPSHOT(..),
+
+	SQLITE_LOCKED(..),
+	SQLITE_LOCKED_PLAIN(..),
+	SQLITE_LOCKED_SHAREDCACHE(..),
+
+	SQLITE_NOMEM(..),
+
+	SQLITE_READONLY(..),
+	SQLITE_READONLY_PLAIN(..),
+	SQLITE_READONLY_RECOVERY(..),
+	SQLITE_READONLY_CANTLOCK(..),
+	SQLITE_READONLY_ROLLBACK(..),
+	SQLITE_READONLY_DBMOVED(..),
+
+	SQLITE_INTERRUPT(..),
+
+	SQLITE_IOERR(..),
+	SQLITE_IOERR_PLAIN(..),
+	SQLITE_IOERR_READ(..),
+	SQLITE_IOERR_SHORT_READ(..),
+	SQLITE_IOERR_WRITE(..),
+	SQLITE_IOERR_FSYNC(..),
+	SQLITE_IOERR_DIR_FSYNC(..),
+	SQLITE_IOERR_TRUNCATE(..),
+	SQLITE_IOERR_FSTAT(..),
+	SQLITE_IOERR_UNLOCK(..),
+	SQLITE_IOERR_RDLOCK(..),
+	SQLITE_IOERR_DELETE(..),
+	SQLITE_IOERR_BLOCKED(..),
+	SQLITE_IOERR_NOMEM(..),
+	SQLITE_IOERR_ACCESS(..),
+	SQLITE_IOERR_CHECKRESERVEDLOCK(..),
+	SQLITE_IOERR_LOCK(..),
+	SQLITE_IOERR_CLOSE(..),
+	SQLITE_IOERR_DIR_CLOSE(..),
+	SQLITE_IOERR_SHMOPEN(..),
+	SQLITE_IOERR_SHMSIZE(..),
+	SQLITE_IOERR_SHMLOCK(..),
+	SQLITE_IOERR_SHMMAP(..),
+	SQLITE_IOERR_SEEK(..),
+	SQLITE_IOERR_DELETE_NOENT(..),
+	SQLITE_IOERR_MMAP(..),
+	SQLITE_IOERR_GETTEMPPATH(..),
+	SQLITE_IOERR_CONVPATH(..),
+
+	SQLITE_CORRUPT(..),
+	SQLITE_CORRUPT_PLAIN(..),
+	SQLITE_CORRUPT_VTAB(..),
+
+	SQLITE_NOTFOUND(..),
+	SQLITE_FULL(..),
+
+	SQLITE_CANTOPEN(..),
+	SQLITE_CANTOPEN_PLAIN(..),
+	SQLITE_CANTOPEN_NOTEMPDIR(..),
+	SQLITE_CANTOPEN_ISDIR(..),
+	SQLITE_CANTOPEN_FULLPATH(..),
+	SQLITE_CANTOPEN_CONVPATH(..),
+
+	SQLITE_PROTOCOL(..),
+	SQLITE_EMPTY(..),
+	SQLITE_SCHEMA(..),
+	SQLITE_TOOBIG(..),
+
+	SQLITE_CONSTRAINT(..),
+	SQLITE_CONSTRAINT_PLAIN(..),
+	SQLITE_CONSTRAINT_CHECK(..),
+	SQLITE_CONSTRAINT_COMMITHOOK(..),
+	SQLITE_CONSTRAINT_FOREIGNKEY(..),
+	SQLITE_CONSTRAINT_FUNCTION(..),
+	SQLITE_CONSTRAINT_NOTNULL(..),
+	SQLITE_CONSTRAINT_PRIMARYKEY(..),
+	SQLITE_CONSTRAINT_TRIGGER(..),
+	SQLITE_CONSTRAINT_UNIQUE(..),
+	SQLITE_CONSTRAINT_VTAB(..),
+	SQLITE_CONSTRAINT_ROWID(..),
+
+	SQLITE_MISMATCH(..),
+	SQLITE_MISUSE(..),
+	SQLITE_NOLFS(..),
+
+	SQLITE_AUTH(..),
+	SQLITE_AUTH_PLAIN(..),
+	SQLITE_AUTH_USER(..),
+
+	SQLITE_FORMAT(..),
+	SQLITE_RANGE(..),
+	SQLITE_NOTADB(..),
+
+	SQLITE_NOTICE(..),
+	SQLITE_NOTICE_PLAIN(..),
+	SQLITE_NOTICE_RECOVER_WAL(..),
+	SQLITE_NOTICE_RECOVER_ROLLBACK(..),
+
+	SQLITE_WARNING(..),
+	SQLITE_WARNING_PLAIN(..),
+	SQLITE_WARNING_AUTOINDEX(..),
+
+	SQLITE_BIND_ERROR(..),
+	SQLITE_ERROR_OTHER(..),
+	) where
+
+import Database.SmplstSQLite3.Exception.Internal
diff --git a/src/Database/SmplstSQLite3/Exception/Internal.hs b/src/Database/SmplstSQLite3/Exception/Internal.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/SmplstSQLite3/Exception/Internal.hs
@@ -0,0 +1,445 @@
+{-# LANGUAGE TemplateHaskell, ExistentialQuantification, DeriveDataTypeable #-}
+
+module Database.SmplstSQLite3.Exception.Internal (
+	sqliteThrow, sqliteThrowBindError,
+
+	SQLiteException(..),
+
+	SQLITE_ERROR(..),
+	SQLITE_INTERNAL(..),
+	SQLITE_PERM(..),
+
+	SQLITE_ABORT(..),
+	SQLITE_ABORT_PLAIN(..),
+	SQLITE_ABORT_ROLLBACK(..),
+
+	SQLITE_BUSY(..),
+	SQLITE_BUSY_PLAIN(..),
+	SQLITE_BUSY_RECOVERY(..),
+	SQLITE_BUSY_SNAPSHOT(..),
+
+	SQLITE_LOCKED(..),
+	SQLITE_LOCKED_PLAIN(..),
+	SQLITE_LOCKED_SHAREDCACHE(..),
+
+	SQLITE_NOMEM(..),
+
+	SQLITE_READONLY(..),
+	SQLITE_READONLY_PLAIN(..),
+	SQLITE_READONLY_RECOVERY(..),
+	SQLITE_READONLY_CANTLOCK(..),
+	SQLITE_READONLY_ROLLBACK(..),
+	SQLITE_READONLY_DBMOVED(..),
+
+	SQLITE_INTERRUPT(..),
+
+	SQLITE_IOERR(..),
+	SQLITE_IOERR_PLAIN(..),
+	SQLITE_IOERR_READ(..),
+	SQLITE_IOERR_SHORT_READ(..),
+	SQLITE_IOERR_WRITE(..),
+	SQLITE_IOERR_FSYNC(..),
+	SQLITE_IOERR_DIR_FSYNC(..),
+	SQLITE_IOERR_TRUNCATE(..),
+	SQLITE_IOERR_FSTAT(..),
+	SQLITE_IOERR_UNLOCK(..),
+	SQLITE_IOERR_RDLOCK(..),
+	SQLITE_IOERR_DELETE(..),
+	SQLITE_IOERR_BLOCKED(..),
+	SQLITE_IOERR_NOMEM(..),
+	SQLITE_IOERR_ACCESS(..),
+	SQLITE_IOERR_CHECKRESERVEDLOCK(..),
+	SQLITE_IOERR_LOCK(..),
+	SQLITE_IOERR_CLOSE(..),
+	SQLITE_IOERR_DIR_CLOSE(..),
+	SQLITE_IOERR_SHMOPEN(..),
+	SQLITE_IOERR_SHMSIZE(..),
+	SQLITE_IOERR_SHMLOCK(..),
+	SQLITE_IOERR_SHMMAP(..),
+	SQLITE_IOERR_SEEK(..),
+	SQLITE_IOERR_DELETE_NOENT(..),
+	SQLITE_IOERR_MMAP(..),
+	SQLITE_IOERR_GETTEMPPATH(..),
+	SQLITE_IOERR_CONVPATH(..),
+
+	SQLITE_CORRUPT(..),
+	SQLITE_CORRUPT_PLAIN(..),
+	SQLITE_CORRUPT_VTAB(..),
+
+	SQLITE_NOTFOUND(..),
+	SQLITE_FULL(..),
+
+	SQLITE_CANTOPEN(..),
+	SQLITE_CANTOPEN_PLAIN(..),
+	SQLITE_CANTOPEN_NOTEMPDIR(..),
+	SQLITE_CANTOPEN_ISDIR(..),
+	SQLITE_CANTOPEN_FULLPATH(..),
+	SQLITE_CANTOPEN_CONVPATH(..),
+
+	SQLITE_PROTOCOL(..),
+	SQLITE_EMPTY(..),
+	SQLITE_SCHEMA(..),
+	SQLITE_TOOBIG(..),
+
+	SQLITE_CONSTRAINT(..),
+	SQLITE_CONSTRAINT_PLAIN(..),
+	SQLITE_CONSTRAINT_CHECK(..),
+	SQLITE_CONSTRAINT_COMMITHOOK(..),
+	SQLITE_CONSTRAINT_FOREIGNKEY(..),
+	SQLITE_CONSTRAINT_FUNCTION(..),
+	SQLITE_CONSTRAINT_NOTNULL(..),
+	SQLITE_CONSTRAINT_PRIMARYKEY(..),
+	SQLITE_CONSTRAINT_TRIGGER(..),
+	SQLITE_CONSTRAINT_UNIQUE(..),
+	SQLITE_CONSTRAINT_VTAB(..),
+	SQLITE_CONSTRAINT_ROWID(..),
+
+	SQLITE_MISMATCH(..),
+	SQLITE_MISUSE(..),
+	SQLITE_NOLFS(..),
+
+	SQLITE_AUTH(..),
+	SQLITE_AUTH_PLAIN(..),
+	SQLITE_AUTH_USER(..),
+
+	SQLITE_FORMAT(..),
+	SQLITE_RANGE(..),
+	SQLITE_NOTADB(..),
+
+	SQLITE_NOTICE(..),
+	SQLITE_NOTICE_PLAIN(..),
+	SQLITE_NOTICE_RECOVER_WAL(..),
+	SQLITE_NOTICE_RECOVER_ROLLBACK(..),
+
+	SQLITE_WARNING(..),
+	SQLITE_WARNING_PLAIN(..),
+	SQLITE_WARNING_AUTOINDEX(..),
+
+	SQLITE_BIND_ERROR(..),
+	SQLITE_ERROR_OTHER(..) ) where
+
+import Control.Exception
+import Control.Exception.Hierarchy
+import Data.Typeable
+import Foreign.C.Types
+
+import Database.SmplstSQLite3.Constants
+import Database.SmplstSQLite3.Templates
+
+mapM newException [
+	"SQLITE_ERROR",
+	"SQLITE_INTERNAL",
+	"SQLITE_PERM",
+
+	"SQLITE_ABORT_PLAIN",
+	"SQLITE_ABORT_ROLLBACK",
+
+	"SQLITE_BUSY_PLAIN",
+	"SQLITE_BUSY_RECOVERY",
+	"SQLITE_BUSY_SNAPSHOT",
+
+	"SQLITE_LOCKED_PLAIN",
+	"SQLITE_LOCKED_SHAREDCACHE",
+
+	"SQLITE_NOMEM",
+
+	"SQLITE_READONLY_PLAIN",
+	"SQLITE_READONLY_RECOVERY",
+	"SQLITE_READONLY_CANTLOCK",
+	"SQLITE_READONLY_ROLLBACK",
+	"SQLITE_READONLY_DBMOVED",
+
+	"SQLITE_INTERRUPT",
+
+	"SQLITE_IOERR_PLAIN",
+	"SQLITE_IOERR_READ",
+	"SQLITE_IOERR_SHORT_READ",
+	"SQLITE_IOERR_WRITE",
+	"SQLITE_IOERR_FSYNC",
+	"SQLITE_IOERR_DIR_FSYNC",
+	"SQLITE_IOERR_TRUNCATE",
+	"SQLITE_IOERR_FSTAT",
+	"SQLITE_IOERR_UNLOCK",
+	"SQLITE_IOERR_RDLOCK",
+	"SQLITE_IOERR_DELETE",
+	"SQLITE_IOERR_BLOCKED",
+	"SQLITE_IOERR_NOMEM",
+	"SQLITE_IOERR_ACCESS",
+	"SQLITE_IOERR_CHECKRESERVEDLOCK",
+	"SQLITE_IOERR_LOCK",
+	"SQLITE_IOERR_CLOSE",
+	"SQLITE_IOERR_DIR_CLOSE",
+	"SQLITE_IOERR_SHMOPEN",
+	"SQLITE_IOERR_SHMSIZE",
+	"SQLITE_IOERR_SHMLOCK",
+	"SQLITE_IOERR_SHMMAP",
+	"SQLITE_IOERR_SEEK",
+	"SQLITE_IOERR_DELETE_NOENT",
+	"SQLITE_IOERR_MMAP",
+	"SQLITE_IOERR_GETTEMPPATH",
+	"SQLITE_IOERR_CONVPATH",
+
+	"SQLITE_CORRUPT_PLAIN",
+	"SQLITE_CORRUPT_VTAB",
+
+	"SQLITE_NOTFOUND",
+	"SQLITE_FULL",
+
+	"SQLITE_CANTOPEN_PLAIN",
+	"SQLITE_CANTOPEN_NOTEMPDIR",
+	"SQLITE_CANTOPEN_ISDIR",
+	"SQLITE_CANTOPEN_FULLPATH",
+	"SQLITE_CANTOPEN_CONVPATH",
+
+	"SQLITE_PROTOCOL",
+	"SQLITE_EMPTY",
+	"SQLITE_SCHEMA",
+	"SQLITE_TOOBIG",
+
+	"SQLITE_CONSTRAINT_PLAIN",
+	"SQLITE_CONSTRAINT_CHECK",
+	"SQLITE_CONSTRAINT_COMMITHOOK",
+	"SQLITE_CONSTRAINT_FOREIGNKEY",
+	"SQLITE_CONSTRAINT_FUNCTION",
+	"SQLITE_CONSTRAINT_NOTNULL",
+	"SQLITE_CONSTRAINT_PRIMARYKEY",
+	"SQLITE_CONSTRAINT_TRIGGER",
+	"SQLITE_CONSTRAINT_UNIQUE",
+	"SQLITE_CONSTRAINT_VTAB",
+	"SQLITE_CONSTRAINT_ROWID",
+
+	"SQLITE_MISMATCH",
+	"SQLITE_MISUSE",
+	"SQLITE_NOLFS",
+
+	"SQLITE_AUTH_PLAIN",
+	"SQLITE_AUTH_USER",
+
+	"SQLITE_FORMAT",
+	"SQLITE_RANGE",
+	"SQLITE_NOTADB",
+
+	"SQLITE_NOTICE_PLAIN",
+	"SQLITE_NOTICE_RECOVER_WAL",
+	"SQLITE_NOTICE_RECOVER_ROLLBACK",
+
+	"SQLITE_WARNING_PLAIN",
+	"SQLITE_WARNING_AUTOINDEX",
+
+	"SQLITE_BIND_ERROR" ]
+
+
+data SQLITE_ERROR_OTHER = SQLITE_ERROR_OTHER CInt String deriving (Typeable, Show)
+
+exceptionHierarchy Nothing $
+	ExNode "SQLiteException" [
+		ExType ''SQLITE_ERROR,
+		ExType ''SQLITE_INTERNAL,
+		ExType ''SQLITE_PERM,
+		ExNode "SQLITE_ABORT" [
+			ExType ''SQLITE_ABORT_PLAIN,
+			ExType ''SQLITE_ABORT_ROLLBACK
+			],
+		ExNode "SQLITE_BUSY" [
+			ExType ''SQLITE_BUSY_PLAIN,
+			ExType ''SQLITE_BUSY_RECOVERY,
+			ExType ''SQLITE_BUSY_SNAPSHOT
+			],
+		ExNode "SQLITE_LOCKED" [
+			ExType ''SQLITE_LOCKED_PLAIN,
+			ExType ''SQLITE_LOCKED_SHAREDCACHE
+			],
+		ExType ''SQLITE_NOMEM,
+		ExNode "SQLITE_READONLY" [
+			ExType ''SQLITE_READONLY_PLAIN,
+			ExType ''SQLITE_READONLY_RECOVERY,
+			ExType ''SQLITE_READONLY_CANTLOCK,
+			ExType ''SQLITE_READONLY_ROLLBACK,
+			ExType ''SQLITE_READONLY_DBMOVED
+			],
+		ExType ''SQLITE_INTERRUPT,
+		ExNode "SQLITE_IOERR" [
+			ExType ''SQLITE_IOERR_PLAIN,
+			ExType ''SQLITE_IOERR_READ,
+			ExType ''SQLITE_IOERR_SHORT_READ,
+			ExType ''SQLITE_IOERR_WRITE,
+			ExType ''SQLITE_IOERR_FSYNC,
+			ExType ''SQLITE_IOERR_DIR_FSYNC,
+			ExType ''SQLITE_IOERR_TRUNCATE,
+			ExType ''SQLITE_IOERR_FSTAT,
+			ExType ''SQLITE_IOERR_UNLOCK,
+			ExType ''SQLITE_IOERR_RDLOCK,
+			ExType ''SQLITE_IOERR_DELETE,
+			ExType ''SQLITE_IOERR_BLOCKED,
+			ExType ''SQLITE_IOERR_NOMEM,
+			ExType ''SQLITE_IOERR_ACCESS,
+			ExType ''SQLITE_IOERR_CHECKRESERVEDLOCK,
+			ExType ''SQLITE_IOERR_LOCK,
+			ExType ''SQLITE_IOERR_CLOSE,
+			ExType ''SQLITE_IOERR_DIR_CLOSE,
+			ExType ''SQLITE_IOERR_SHMOPEN,
+			ExType ''SQLITE_IOERR_SHMSIZE,
+			ExType ''SQLITE_IOERR_SHMLOCK,
+			ExType ''SQLITE_IOERR_SHMMAP,
+			ExType ''SQLITE_IOERR_SEEK,
+			ExType ''SQLITE_IOERR_DELETE_NOENT,
+			ExType ''SQLITE_IOERR_MMAP,
+			ExType ''SQLITE_IOERR_GETTEMPPATH,
+			ExType ''SQLITE_IOERR_CONVPATH
+			],
+		ExNode "SQLITE_CORRUPT" [
+			ExType ''SQLITE_CORRUPT_PLAIN,
+			ExType ''SQLITE_CORRUPT_VTAB
+			],
+		ExType ''SQLITE_NOTFOUND,
+		ExType ''SQLITE_FULL,
+		ExNode "SQLITE_CANTOPEN" [
+			ExType ''SQLITE_CANTOPEN_PLAIN,
+			ExType ''SQLITE_CANTOPEN_NOTEMPDIR,
+			ExType ''SQLITE_CANTOPEN_ISDIR,
+			ExType ''SQLITE_CANTOPEN_FULLPATH,
+			ExType ''SQLITE_CANTOPEN_CONVPATH
+			],
+		ExType ''SQLITE_PROTOCOL,
+		ExType ''SQLITE_EMPTY,
+		ExType ''SQLITE_SCHEMA,
+		ExType ''SQLITE_TOOBIG,
+		ExNode "SQLITE_CONSTRAINT" [
+			ExType ''SQLITE_CONSTRAINT_PLAIN,
+			ExType ''SQLITE_CONSTRAINT_CHECK,
+			ExType ''SQLITE_CONSTRAINT_COMMITHOOK,
+			ExType ''SQLITE_CONSTRAINT_FOREIGNKEY,
+			ExType ''SQLITE_CONSTRAINT_FUNCTION,
+			ExType ''SQLITE_CONSTRAINT_NOTNULL,
+			ExType ''SQLITE_CONSTRAINT_PRIMARYKEY,
+			ExType ''SQLITE_CONSTRAINT_TRIGGER,
+			ExType ''SQLITE_CONSTRAINT_UNIQUE,
+			ExType ''SQLITE_CONSTRAINT_VTAB,
+			ExType ''SQLITE_CONSTRAINT_ROWID
+			],
+		ExType ''SQLITE_MISMATCH,
+		ExType ''SQLITE_MISUSE,
+		ExType ''SQLITE_NOLFS,
+		ExNode "SQLITE_AUTH" [
+			ExType ''SQLITE_AUTH_PLAIN,
+			ExType ''SQLITE_AUTH_USER
+			],
+		ExType ''SQLITE_FORMAT,
+		ExType ''SQLITE_RANGE,
+		ExType ''SQLITE_NOTADB,
+		ExNode "SQLITE_NOTICE" [
+			ExType ''SQLITE_NOTICE_PLAIN,
+			ExType ''SQLITE_NOTICE_RECOVER_WAL,
+			ExType ''SQLITE_NOTICE_RECOVER_ROLLBACK
+			],
+		ExNode "SQLITE_WARNING" [
+			ExType ''SQLITE_WARNING_PLAIN,
+			ExType ''SQLITE_WARNING_AUTOINDEX
+			],
+
+		ExType ''SQLITE_BIND_ERROR,
+		ExType ''SQLITE_ERROR_OTHER ]
+
+mkSqliteThrow [
+	'SQLITE_ERROR,
+	'SQLITE_INTERNAL,
+	'SQLITE_PERM,
+
+	'SQLITE_ABORT_PLAIN,
+	'SQLITE_ABORT_ROLLBACK,
+
+	'SQLITE_BUSY_PLAIN,
+	'SQLITE_BUSY_RECOVERY,
+	'SQLITE_BUSY_SNAPSHOT,
+
+	'SQLITE_LOCKED_PLAIN,
+	'SQLITE_LOCKED_SHAREDCACHE,
+
+	'SQLITE_NOMEM,
+
+	'SQLITE_READONLY_PLAIN,
+	'SQLITE_READONLY_RECOVERY,
+	'SQLITE_READONLY_CANTLOCK,
+	'SQLITE_READONLY_ROLLBACK,
+	'SQLITE_READONLY_DBMOVED,
+
+	'SQLITE_INTERRUPT,
+
+	'SQLITE_IOERR_PLAIN,
+	'SQLITE_IOERR_READ,
+	'SQLITE_IOERR_SHORT_READ,
+	'SQLITE_IOERR_WRITE,
+	'SQLITE_IOERR_FSYNC,
+	'SQLITE_IOERR_DIR_FSYNC,
+	'SQLITE_IOERR_TRUNCATE,
+	'SQLITE_IOERR_FSTAT,
+	'SQLITE_IOERR_UNLOCK,
+	'SQLITE_IOERR_RDLOCK,
+	'SQLITE_IOERR_DELETE,
+	'SQLITE_IOERR_BLOCKED,
+	'SQLITE_IOERR_NOMEM,
+	'SQLITE_IOERR_ACCESS,
+	'SQLITE_IOERR_CHECKRESERVEDLOCK,
+	'SQLITE_IOERR_LOCK,
+	'SQLITE_IOERR_CLOSE,
+	'SQLITE_IOERR_DIR_CLOSE,
+	'SQLITE_IOERR_SHMOPEN,
+	'SQLITE_IOERR_SHMSIZE,
+	'SQLITE_IOERR_SHMLOCK,
+	'SQLITE_IOERR_SHMMAP,
+	'SQLITE_IOERR_SEEK,
+	'SQLITE_IOERR_DELETE_NOENT,
+	'SQLITE_IOERR_MMAP,
+	'SQLITE_IOERR_GETTEMPPATH,
+	'SQLITE_IOERR_CONVPATH,
+
+	'SQLITE_CORRUPT_PLAIN,
+	'SQLITE_CORRUPT_VTAB,
+
+	'SQLITE_NOTFOUND,
+	'SQLITE_FULL,
+
+	'SQLITE_CANTOPEN_PLAIN,
+	'SQLITE_CANTOPEN_NOTEMPDIR,
+	'SQLITE_CANTOPEN_ISDIR,
+	'SQLITE_CANTOPEN_FULLPATH,
+	'SQLITE_CANTOPEN_CONVPATH,
+
+	'SQLITE_PROTOCOL,
+	'SQLITE_EMPTY,
+	'SQLITE_SCHEMA,
+	'SQLITE_TOOBIG,
+
+	'SQLITE_CONSTRAINT_PLAIN,
+	'SQLITE_CONSTRAINT_CHECK,
+	'SQLITE_CONSTRAINT_COMMITHOOK,
+	'SQLITE_CONSTRAINT_FOREIGNKEY,
+	'SQLITE_CONSTRAINT_FUNCTION,
+	'SQLITE_CONSTRAINT_NOTNULL,
+	'SQLITE_CONSTRAINT_PRIMARYKEY,
+	'SQLITE_CONSTRAINT_TRIGGER,
+	'SQLITE_CONSTRAINT_UNIQUE,
+	'SQLITE_CONSTRAINT_VTAB,
+	'SQLITE_CONSTRAINT_ROWID,
+
+	'SQLITE_MISMATCH,
+	'SQLITE_MISUSE,
+	'SQLITE_NOLFS,
+
+	'SQLITE_AUTH_PLAIN,
+	'SQLITE_AUTH_USER,
+
+	'SQLITE_FORMAT,
+	'SQLITE_RANGE,
+	'SQLITE_NOTADB,
+
+	'SQLITE_NOTICE_PLAIN,
+	'SQLITE_NOTICE_RECOVER_WAL,
+	'SQLITE_NOTICE_RECOVER_ROLLBACK,
+
+	'SQLITE_WARNING_PLAIN,
+	'SQLITE_WARNING_AUTOINDEX
+	]
+
+sqliteThrowBindError :: String -> IO a
+sqliteThrowBindError em = throw $ SQLITE_BIND_ERROR em
