As with Java 7 we can handle more than one type of exception using a single catch block. We should use the ‘|’ operator for putting them together in the same catch statement. When catch handles more than one type of exception the catch parameter is implicitly final. We won’t be able to assign it with a new value. The bytecode created from compiling code that includes a catch statement that handles multiple types of exceptions will be smaller. There won’t be any code duplicity.
package com.abelski.samples; import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class MultipleExceptionsCatch { public static void main(String[] args) { try(FileOutputStream fos = new FileOutputStream("bb.txt"); DataOutputStream dos = new DataOutputStream(fos)) { dos.writeUTF(args[0]); } catch(ArrayIndexOutOfBoundsException | IOException e) { e.printStackTrace(); } } }
The following video clip overviews this code sample and shows its execution.