Java 7捕获多个异常

本文概述

  • 捕获多个异常类型示例2
  • 捕获多个异常类型示例3
【Java 7捕获多个异常】Java允许你在单个catch块中捕获多个类型异常。它是Java 7中引入的, 有助于优化代码。
你可以使用竖线(|)分隔catch块中的多个异常。
Java 7之前的一种旧方法, 用于处理多个异常。
捕获多个异常类型示例1
public class MultipleExceptionExample{ public static void main(String args[]){ try{ int array[] = newint[10]; array[10] = 30/0; } catch(ArithmeticException e){ System.out.println(e.getMessage()); } catch(ArrayIndexOutOfBoundsException e){ System.out.println(e.getMessage()); } catch(Exception e){ System.out.println(e.getMessage()); } } }

输出:
/ by zero

捕获多个异常类型示例2Java 7为我们提供了什么:
public class MultipleExceptionExample{ public static void main(String args[]){ try{ int array[] = newint[10]; array[10] = 30/0; } catch(ArithmeticException | ArrayIndexOutOfBoundsException e){ System.out.println(e.getMessage()); } } }

输出:
/ by zero

捕获多个异常类型示例3
public class MultipleExceptionExample{ public static void main(String args[]){ try{ int array[] = newint[10]; array[10] = 30/0; } catch(Exception | ArithmeticException | ArrayIndexOutOfBoundsException e){ System.out.println(e.getMessage()); } } }

输出:
Compile-time error: The exception ArithmeticException is already caught by the alternative Exception

因此, 在这里, 如果你正在捕获多个异常, 请遵循一般化规则以使其更专业。这意味着, 如果你使用的是超级(通用)类, 请不要使用子(专用)类。
注–处理多个异常类型的catch块使catch参数隐式最终。在上面的示例中, catch参数“ e”是最终的, 因此你不能为其分配任何值。

    推荐阅读