java: -source 1.5 中不支持 multi-catch 运算符 (请使用 -source 7 或更高版本以启用 multi-catch 运算符)

来源:互联网 发布:淘宝网中老年连衣裙 编辑:程序博客网 时间:2024/06/03 08:41

一 原因:

JDK1.7中的multi-catch的变化, multi-catch 语句中的替代无法通过子类化关联

二 错误详解:

**在不使用jdk1.7的multi-catch时, 我们在处理父子异常时:**import Java.io.*;public class Hello {    public static void main(String[] args) {       try {           throw new IOException("我错了");       } catch (IOException e) {           e.printStackTrace();       } catch (Exception e) {           e.printStackTrace();       }    }}父子异常时, 是先子后父.Jdk1.7中提供了multi-catch语法, 1.7.0-ea-b136包括之前的版本, 我测试时可以使用import java.io.*;public class Hello {    public static void main(String[] args) {       try {           throw new IOException("我错了");       } catch (IOException | Exception e) {           e.printStackTrace();       }    }}但之后, 一直到现在(1.7.0-ea-b143),这样写时会报Hello.java:7: 错误: multi-catch 语句中的替代无法通过子类化关联                } catch (IOException | Exception e) {                                             ^  替代IOException是替代Exception的子类1 个错误**查到官方的说明是multi-catch语法时的异常不能有相交. 如IOException是Exception的子类, 所以以后用 | 分隔开的异常不能有父子关系.**改成这样是可以的:import java.io.*;public class Hello {    public static void main(String[] args) {       try {           print();       } catch (IOException | ClassNotFoundException e) {           e.printStackTrace();       }    }    public static void print()           throws IOException, ClassNotFoundException {    }}
阅读全文
0 0
原创粉丝点击