Forums Register Login

Assertion Exception handling

+Pie Number of slices to send: Send
Hello All,
How can following code compile?
Iam asking this because,this code block is trying to catch an Exception which is never thrown[AssertionError is NOT a child of Exception].But code still compiles

Why is that?

Many Thanks

+Pie Number of slices to send: Send
The Exception class is also the base class for the RuntimeException class. The compiler is allowing the Exception here because it can't tell if it "is trying to catch an Exception which is never thrown" -- it could be an unchecked exception that is caught.

Henry
+Pie Number of slices to send: Send
Thanks for the clarification.
This means that a called method[even if it doesnt throw any chcecked exceptions] can always be there in try-catch block of calling method with "Exception" catch, since RunTimeException is a subclass of Exception.
Ex:


I tested this and it works.

Thanks Again
Prashanth
+Pie Number of slices to send: Send
Hi Prashanth,

Including any code in the try block does not mean that the code should throw an exception.

Compiler only cares about checked Exceptions and since AssertionError is a runtime Error(not an exception, it does not even come under Exception heirarchy ), the compilation proceeds even if you don't deal with it.

Moreover it is not a good practice to handle Assertion errors(As they can be disabled when the code compiles or runs), it is meant to use only during development not during deployment.

- Ramu
+Pie Number of slices to send: Send
When you have exhausted all possibilities, remember this: you haven't - Edison. Tiny ad:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 646 times.
Similar Threads
Can you throw too many exceptions?
Exception Handling
Reg. return from try-catch-finally
Exception confusion
exceptions
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 28, 2024 02:55:34.