Java has support for a multi-catch block to handle multiple types of exceptions in a catch block.
The following code wants to catch three exceptions: Exception1, Exception2, and Exception3.
The code would look as follows:
try { // Code that may throw Exception1, Exception2, or Exception3 } catch (Exception1 e1){ // Handle Exception1 } catch (Exception2 e2){ // Handle Exception2 } catch (Exception3 e3){ // Handle Exception3 }
The above code can be written as follows:
try { // May throw Exception1, Exception2, or Exception3 } catch (Exception1 | Exception2 | Exception3 e) { // Handle Exception1, Exception2, and Exception3 }
In a multi-catch block, you cannot have alternative exceptions that are related by subclassing.
For example, the following multi-catch block is not allowed, because Exception1 and Exception2 are subclasses of Throwable:
try { // May throw Exception1, Exception2, or Exception3 } catch (Exception1 | Exception2 | Throwable e) { // Handle Exceptions here }