Ruby rescue custom exception
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
In following example:
class Foo
class MyCustomerror < StandardError
def message
"My custom error"
end
end
def self.do_standard
1 / 0
rescue StandardError => e
puts e.message
end
def self.do_custom
1 / 0
rescue MyCustomerror => e
puts e.message
end
end
I have a problem with call rescue block which params is MyCustomerror.
If i call Foo.do_standard, rescue block is called, however when i call Foo.do_custom rescue block with MyCustomerror isn't called. Where is the problem?
ruby exception custom-exceptions
add a comment |
In following example:
class Foo
class MyCustomerror < StandardError
def message
"My custom error"
end
end
def self.do_standard
1 / 0
rescue StandardError => e
puts e.message
end
def self.do_custom
1 / 0
rescue MyCustomerror => e
puts e.message
end
end
I have a problem with call rescue block which params is MyCustomerror.
If i call Foo.do_standard, rescue block is called, however when i call Foo.do_custom rescue block with MyCustomerror isn't called. Where is the problem?
ruby exception custom-exceptions
1
rescue MyCustomerror
rescuesMyCustomerror
and its subclasses. ButZeroDivisionError
isn't one of its subclasses.
– Stefan
Nov 16 '18 at 16:35
add a comment |
In following example:
class Foo
class MyCustomerror < StandardError
def message
"My custom error"
end
end
def self.do_standard
1 / 0
rescue StandardError => e
puts e.message
end
def self.do_custom
1 / 0
rescue MyCustomerror => e
puts e.message
end
end
I have a problem with call rescue block which params is MyCustomerror.
If i call Foo.do_standard, rescue block is called, however when i call Foo.do_custom rescue block with MyCustomerror isn't called. Where is the problem?
ruby exception custom-exceptions
In following example:
class Foo
class MyCustomerror < StandardError
def message
"My custom error"
end
end
def self.do_standard
1 / 0
rescue StandardError => e
puts e.message
end
def self.do_custom
1 / 0
rescue MyCustomerror => e
puts e.message
end
end
I have a problem with call rescue block which params is MyCustomerror.
If i call Foo.do_standard, rescue block is called, however when i call Foo.do_custom rescue block with MyCustomerror isn't called. Where is the problem?
ruby exception custom-exceptions
ruby exception custom-exceptions
asked Nov 16 '18 at 14:40
user3471671user3471671
69112
69112
1
rescue MyCustomerror
rescuesMyCustomerror
and its subclasses. ButZeroDivisionError
isn't one of its subclasses.
– Stefan
Nov 16 '18 at 16:35
add a comment |
1
rescue MyCustomerror
rescuesMyCustomerror
and its subclasses. ButZeroDivisionError
isn't one of its subclasses.
– Stefan
Nov 16 '18 at 16:35
1
1
rescue MyCustomerror
rescues MyCustomerror
and its subclasses. But ZeroDivisionError
isn't one of its subclasses.– Stefan
Nov 16 '18 at 16:35
rescue MyCustomerror
rescues MyCustomerror
and its subclasses. But ZeroDivisionError
isn't one of its subclasses.– Stefan
Nov 16 '18 at 16:35
add a comment |
1 Answer
1
active
oldest
votes
There is no place in your code that could raise a MyCustomError
exception, so there is nothing to rescue from. The only exception that could possibly be raised by that code is a ZeroDivisionError
.
It might be worth noting thatZeroDivisionError
inherits fromStandardError
which is whyrescue StandardError
rescues it.
– Stefan
Nov 16 '18 at 16:45
Place or not place. It does not explain why in case call method do_standard is caught by StandardError, instead in case call do_custom not.
– user3471671
Nov 16 '18 at 19:04
@Stefan In the above example MyCustomerror is also inherited by StandardError!
– user3471671
Nov 16 '18 at 19:07
Both functions raiseZeroDivisionError
.ZeroDivisionError
is aStandardError
so.do_standard
rescues it.ZeroDivisionError
is not aMyCustomerror
and so.do_custom
does not rescue it.
– David Maze
Nov 17 '18 at 2:41
@user3471671 it's the other way round:MyCustomerror
inherits fromStandardError
. In the class hierarchy,MyCustomerror
andZeroDivisionError
are siblings.
– Stefan
Nov 17 '18 at 13:57
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53339974%2fruby-rescue-custom-exception%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
There is no place in your code that could raise a MyCustomError
exception, so there is nothing to rescue from. The only exception that could possibly be raised by that code is a ZeroDivisionError
.
It might be worth noting thatZeroDivisionError
inherits fromStandardError
which is whyrescue StandardError
rescues it.
– Stefan
Nov 16 '18 at 16:45
Place or not place. It does not explain why in case call method do_standard is caught by StandardError, instead in case call do_custom not.
– user3471671
Nov 16 '18 at 19:04
@Stefan In the above example MyCustomerror is also inherited by StandardError!
– user3471671
Nov 16 '18 at 19:07
Both functions raiseZeroDivisionError
.ZeroDivisionError
is aStandardError
so.do_standard
rescues it.ZeroDivisionError
is not aMyCustomerror
and so.do_custom
does not rescue it.
– David Maze
Nov 17 '18 at 2:41
@user3471671 it's the other way round:MyCustomerror
inherits fromStandardError
. In the class hierarchy,MyCustomerror
andZeroDivisionError
are siblings.
– Stefan
Nov 17 '18 at 13:57
add a comment |
There is no place in your code that could raise a MyCustomError
exception, so there is nothing to rescue from. The only exception that could possibly be raised by that code is a ZeroDivisionError
.
It might be worth noting thatZeroDivisionError
inherits fromStandardError
which is whyrescue StandardError
rescues it.
– Stefan
Nov 16 '18 at 16:45
Place or not place. It does not explain why in case call method do_standard is caught by StandardError, instead in case call do_custom not.
– user3471671
Nov 16 '18 at 19:04
@Stefan In the above example MyCustomerror is also inherited by StandardError!
– user3471671
Nov 16 '18 at 19:07
Both functions raiseZeroDivisionError
.ZeroDivisionError
is aStandardError
so.do_standard
rescues it.ZeroDivisionError
is not aMyCustomerror
and so.do_custom
does not rescue it.
– David Maze
Nov 17 '18 at 2:41
@user3471671 it's the other way round:MyCustomerror
inherits fromStandardError
. In the class hierarchy,MyCustomerror
andZeroDivisionError
are siblings.
– Stefan
Nov 17 '18 at 13:57
add a comment |
There is no place in your code that could raise a MyCustomError
exception, so there is nothing to rescue from. The only exception that could possibly be raised by that code is a ZeroDivisionError
.
There is no place in your code that could raise a MyCustomError
exception, so there is nothing to rescue from. The only exception that could possibly be raised by that code is a ZeroDivisionError
.
answered Nov 16 '18 at 14:47
Jörg W MittagJörg W Mittag
294k63359557
294k63359557
It might be worth noting thatZeroDivisionError
inherits fromStandardError
which is whyrescue StandardError
rescues it.
– Stefan
Nov 16 '18 at 16:45
Place or not place. It does not explain why in case call method do_standard is caught by StandardError, instead in case call do_custom not.
– user3471671
Nov 16 '18 at 19:04
@Stefan In the above example MyCustomerror is also inherited by StandardError!
– user3471671
Nov 16 '18 at 19:07
Both functions raiseZeroDivisionError
.ZeroDivisionError
is aStandardError
so.do_standard
rescues it.ZeroDivisionError
is not aMyCustomerror
and so.do_custom
does not rescue it.
– David Maze
Nov 17 '18 at 2:41
@user3471671 it's the other way round:MyCustomerror
inherits fromStandardError
. In the class hierarchy,MyCustomerror
andZeroDivisionError
are siblings.
– Stefan
Nov 17 '18 at 13:57
add a comment |
It might be worth noting thatZeroDivisionError
inherits fromStandardError
which is whyrescue StandardError
rescues it.
– Stefan
Nov 16 '18 at 16:45
Place or not place. It does not explain why in case call method do_standard is caught by StandardError, instead in case call do_custom not.
– user3471671
Nov 16 '18 at 19:04
@Stefan In the above example MyCustomerror is also inherited by StandardError!
– user3471671
Nov 16 '18 at 19:07
Both functions raiseZeroDivisionError
.ZeroDivisionError
is aStandardError
so.do_standard
rescues it.ZeroDivisionError
is not aMyCustomerror
and so.do_custom
does not rescue it.
– David Maze
Nov 17 '18 at 2:41
@user3471671 it's the other way round:MyCustomerror
inherits fromStandardError
. In the class hierarchy,MyCustomerror
andZeroDivisionError
are siblings.
– Stefan
Nov 17 '18 at 13:57
It might be worth noting that
ZeroDivisionError
inherits from StandardError
which is why rescue StandardError
rescues it.– Stefan
Nov 16 '18 at 16:45
It might be worth noting that
ZeroDivisionError
inherits from StandardError
which is why rescue StandardError
rescues it.– Stefan
Nov 16 '18 at 16:45
Place or not place. It does not explain why in case call method do_standard is caught by StandardError, instead in case call do_custom not.
– user3471671
Nov 16 '18 at 19:04
Place or not place. It does not explain why in case call method do_standard is caught by StandardError, instead in case call do_custom not.
– user3471671
Nov 16 '18 at 19:04
@Stefan In the above example MyCustomerror is also inherited by StandardError!
– user3471671
Nov 16 '18 at 19:07
@Stefan In the above example MyCustomerror is also inherited by StandardError!
– user3471671
Nov 16 '18 at 19:07
Both functions raise
ZeroDivisionError
. ZeroDivisionError
is a StandardError
so .do_standard
rescues it. ZeroDivisionError
is not a MyCustomerror
and so .do_custom
does not rescue it.– David Maze
Nov 17 '18 at 2:41
Both functions raise
ZeroDivisionError
. ZeroDivisionError
is a StandardError
so .do_standard
rescues it. ZeroDivisionError
is not a MyCustomerror
and so .do_custom
does not rescue it.– David Maze
Nov 17 '18 at 2:41
@user3471671 it's the other way round:
MyCustomerror
inherits from StandardError
. In the class hierarchy, MyCustomerror
and ZeroDivisionError
are siblings.– Stefan
Nov 17 '18 at 13:57
@user3471671 it's the other way round:
MyCustomerror
inherits from StandardError
. In the class hierarchy, MyCustomerror
and ZeroDivisionError
are siblings.– Stefan
Nov 17 '18 at 13:57
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53339974%2fruby-rescue-custom-exception%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
rescue MyCustomerror
rescuesMyCustomerror
and its subclasses. ButZeroDivisionError
isn't one of its subclasses.– Stefan
Nov 16 '18 at 16:35