File: exceptions.rb

package info (click to toggle)
ruby-sequel 5.63.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 10,408 kB
  • sloc: ruby: 113,747; makefile: 3
file content (125 lines) | stat: -rw-r--r-- 3,953 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# frozen-string-literal: true

module Sequel
  # The default exception class for exceptions raised by Sequel.
  # All exception classes defined by Sequel are descendants of this class.
  class Error < ::StandardError
    # If this exception wraps an underlying exception, the underlying
    # exception is held here.
    attr_accessor :wrapped_exception

    # :nocov:
    if RUBY_VERSION >= '2.1'
    # :nocov:
      # Returned the wrapped exception if one exists, otherwise use
      # ruby's default behavior.
      def cause
        wrapped_exception || super
      end
    end
  end  
    
  (
  # Error raised when the adapter requested doesn't exist or can't be loaded.
  AdapterNotFound = Class.new(Error)
  ).name

  (
  # Generic error raised by the database adapters, indicating a
  # problem originating from the database server.  Usually raised
  # because incorrect SQL syntax is used.
  DatabaseError = Class.new(Error)
  ).name
  
  (
  # Error raised when the Sequel is unable to connect to the database with the
  # connection parameters it was given.
  DatabaseConnectionError = Class.new(DatabaseError)
  ).name

  (
  # Error raised by adapters when they determine that the connection
  # to the database has been lost.  Instructs the connection pool code to 
  # remove that connection from the pool so that other connections can be acquired
  # automatically.
  DatabaseDisconnectError = Class.new(DatabaseError)
  ).name

  (
  # Generic error raised when Sequel determines a database constraint has been violated.
  ConstraintViolation = Class.new(DatabaseError)
  ).name

  (
  # Error raised when Sequel determines a database check constraint has been violated.
  CheckConstraintViolation = Class.new(ConstraintViolation)
  ).name

  (
  # Error raised when Sequel determines a database foreign key constraint has been violated.
  ForeignKeyConstraintViolation = Class.new(ConstraintViolation)
  ).name

  (
  # Error raised when Sequel determines a database NOT NULL constraint has been violated.
  NotNullConstraintViolation = Class.new(ConstraintViolation)
  ).name

  (
  # Error raised when Sequel determines a database unique constraint has been violated.
  UniqueConstraintViolation = Class.new(ConstraintViolation)
  ).name

  (
  # Error raised when Sequel determines a serialization failure/deadlock in the database.
  SerializationFailure = Class.new(DatabaseError)
  ).name

  (
  # Error raised when Sequel determines the database could not acquire a necessary lock
  # before timing out. Use of Dataset#nowait can often cause this exception when
  # retrieving rows.
  DatabaseLockTimeout = Class.new(DatabaseError)
  ).name

  (
  # Error raised on an invalid operation, such as trying to update or delete
  # a joined or grouped dataset when the database does not support that.
  InvalidOperation = Class.new(Error)
  ).name

  (
  # Error raised when attempting an invalid type conversion.
  InvalidValue = Class.new(Error)
  ).name

  # Error raised when the user requests a record via the first! or similar
  # method, and the dataset does not yield any rows.
  class NoMatchingRow < Error
    # The dataset that raised this NoMatchingRow exception.
    attr_accessor :dataset

    # If the first argument is a Sequel::Dataset, set the dataset related to
    # the exception to that argument, instead of assuming it is the exception message.
    def initialize(msg=nil)
      if msg.is_a?(Sequel::Dataset)
        @dataset = msg
        msg = nil
      end
      super
    end
  end

  (
  # Error raised when the connection pool cannot acquire a database connection
  # before the timeout.
  PoolTimeout = Class.new(Error)
  ).name

  (
  # Error that you should raise to signal a rollback of the current transaction.
  # The transaction block will catch this exception, rollback the current transaction,
  # and won't reraise it (unless a reraise is requested).
  Rollback = Class.new(Error)
  ).name
end