exception.c 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include <sqlite3_ruby.h>
  2. void rb_sqlite3_raise(sqlite3 * db, int status)
  3. {
  4. VALUE klass = Qnil;
  5. switch(status) {
  6. case SQLITE_OK:
  7. return;
  8. break;
  9. case SQLITE_ERROR:
  10. klass = rb_path2class("SQLite3::SQLException");
  11. break;
  12. case SQLITE_INTERNAL:
  13. klass = rb_path2class("SQLite3::InternalException");
  14. break;
  15. case SQLITE_PERM:
  16. klass = rb_path2class("SQLite3::PermissionException");
  17. break;
  18. case SQLITE_ABORT:
  19. klass = rb_path2class("SQLite3::AbortException");
  20. break;
  21. case SQLITE_BUSY:
  22. klass = rb_path2class("SQLite3::BusyException");
  23. break;
  24. case SQLITE_LOCKED:
  25. klass = rb_path2class("SQLite3::LockedException");
  26. break;
  27. case SQLITE_NOMEM:
  28. klass = rb_path2class("SQLite3::MemoryException");
  29. break;
  30. case SQLITE_READONLY:
  31. klass = rb_path2class("SQLite3::ReadOnlyException");
  32. break;
  33. case SQLITE_INTERRUPT:
  34. klass = rb_path2class("SQLite3::InterruptException");
  35. break;
  36. case SQLITE_IOERR:
  37. klass = rb_path2class("SQLite3::IOException");
  38. break;
  39. case SQLITE_CORRUPT:
  40. klass = rb_path2class("SQLite3::CorruptException");
  41. break;
  42. case SQLITE_NOTFOUND:
  43. klass = rb_path2class("SQLite3::NotFoundException");
  44. break;
  45. case SQLITE_FULL:
  46. klass = rb_path2class("SQLite3::FullException");
  47. break;
  48. case SQLITE_CANTOPEN:
  49. klass = rb_path2class("SQLite3::CantOpenException");
  50. break;
  51. case SQLITE_PROTOCOL:
  52. klass = rb_path2class("SQLite3::ProtocolException");
  53. break;
  54. case SQLITE_EMPTY:
  55. klass = rb_path2class("SQLite3::EmptyException");
  56. break;
  57. case SQLITE_SCHEMA:
  58. klass = rb_path2class("SQLite3::SchemaChangedException");
  59. break;
  60. case SQLITE_TOOBIG:
  61. klass = rb_path2class("SQLite3::TooBigException");
  62. break;
  63. case SQLITE_CONSTRAINT:
  64. klass = rb_path2class("SQLite3::ConstraintException");
  65. break;
  66. case SQLITE_MISMATCH:
  67. klass = rb_path2class("SQLite3::MismatchException");
  68. break;
  69. case SQLITE_MISUSE:
  70. klass = rb_path2class("SQLite3::MisuseException");
  71. break;
  72. case SQLITE_NOLFS:
  73. klass = rb_path2class("SQLite3::UnsupportedException");
  74. break;
  75. case SQLITE_AUTH:
  76. klass = rb_path2class("SQLite3::AuthorizationException");
  77. break;
  78. case SQLITE_FORMAT:
  79. klass = rb_path2class("SQLite3::FormatException");
  80. break;
  81. case SQLITE_RANGE:
  82. klass = rb_path2class("SQLite3::RangeException");
  83. break;
  84. case SQLITE_NOTADB:
  85. klass = rb_path2class("SQLite3::NotADatabaseException");
  86. break;
  87. default:
  88. klass = rb_eRuntimeError;
  89. }
  90. rb_raise(klass, "%s", sqlite3_errmsg(db));
  91. }