debugjavaCritical
Can I catch multiple Java exceptions in the same catch clause?
Viewed 0 times
javasametheclausemultipleexceptionscancatch
Problem
In Java, I want to do something like this:
...instead of:
Is there any way to do this?
try {
...
} catch (/* code to catch IllegalArgumentException, SecurityException,
IllegalAccessException, and NoSuchFieldException at the same time */) {
someCode();
}...instead of:
try {
...
} catch (IllegalArgumentException e) {
someCode();
} catch (SecurityException e) {
someCode();
} catch (IllegalAccessException e) {
someCode();
} catch (NoSuchFieldException e) {
someCode();
}Is there any way to do this?
Solution
This has been possible since Java 7. The syntax for a multi-catch block is:
Remember, though, that if all the exceptions belong to the same class hierarchy, you can simply catch that base exception type.
Also note that you cannot catch both
The fix for this is to only include the ancestor exception in the exception list, as it will also catch exceptions of the descendant type.
try {
...
} catch (IllegalArgumentException | SecurityException | IllegalAccessException |
NoSuchFieldException e) {
someCode();
}
Remember, though, that if all the exceptions belong to the same class hierarchy, you can simply catch that base exception type.
Also note that you cannot catch both
ExceptionA and ExceptionB in the same block if ExceptionB is inherited, either directly or indirectly, from ExceptionA. The compiler will complain:Alternatives in a multi-catch statement cannot be related by subclassing
Alternative ExceptionB is a subclass of alternative ExceptionA
The fix for this is to only include the ancestor exception in the exception list, as it will also catch exceptions of the descendant type.
Context
Stack Overflow Q#3495926, score: 1415
Revisions (0)
No revisions yet.