-
Notifications
You must be signed in to change notification settings - Fork 0
/
catching_all_exceptions.rb
executable file
·64 lines (52 loc) · 1.32 KB
/
catching_all_exceptions.rb
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
#!/usr/bin/ruby2.7
class NumberValueException < Exception
attr_reader :number
attr_accessor :message
end
class ZeroException < NumberValueException
def initialize(number)
@number = number
self.message = "0 number has beign given."
end
end
class OneException < NumberValueException
def initialize(number)
@number = number
@message = "1 number has beign given."
end
end
class ThousandException < NumberValueException
def initialize(number)
@number = number
@message = "1000 number has beign given."
end
end
def draw_number
print "Give some number: "
number = gets.to_i
if number == 0
raise ZeroException.new(number)
elsif number == 1
raise OneException.new(number)
elsif number == 1000
raise ThousandException.new(number)
elsif number == 10000 # Unhandled exception.
raise NumberValueException.new
end
number
end
puts "Program begin..."
begin
puts "Risky code..."
number = draw_number
puts("Given number #{number} didn't case exception throwing.")
rescue ZeroException => e
puts("CASE 1: #{e.message} (#{e.number})")
rescue OneException => e
puts("CASE 2: #{e.message} (#{e.number})")
rescue ThousandException => e
puts("CASE 3: #{e.message} (#{e.number})")
rescue NumberValueException
puts("Exception of unknown type catched.\n")
end
puts "Program end..."