JDK1.7新特性--对try-catch代码块的改进
2016-10-25 14:05
253 查看
1.7之前对多异常的处理
class MainTest {
public static void main(String[] args) {
try {
String str = null;
Class clzz = Class.forName("testsss");
if (str.equals("abc")) {
System.out.println("ok");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}
多异常之间可以通过|之间进行分割。
同样需要注意的是:
1、异常之间不能存在父子关系,应该是同级关系才行。打印异常,会自动去匹配。
2、异常之间没有顺序关系。
class MainTest {
public static void main(String[] args) {
try {
String str = null;
Class clzz = Class.forName("testsss");
if (str.equals("abc")) {
System.out.println("ok");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}
<div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">需要注意的是:</div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">1、子异常要先于父异常抛出,否则后面的catch将永远执行不到,编译不能通过。</div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">2、异常如果要抛出的话throws ClassNotFoundException ,NullPointerException中间用逗号分割。</div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">3、抛出异常对象用throw,因为只能抛出一个异常,所以用throw不用加s。</div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">4、抛出异常类用throws,因为可能抛出多个异常,所有throw后面要加s。</div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;"> </div><div><span style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;">1.7之后对异常的处理出现了新的改进,同样是上面的这段代码在1.7之后可以这样写:</span> </div>
class MainTest { public static void main(String[] args) { try { String str = null; Class clzz = Class.forName("testsss"); if (str.equals("abc")) { System.out.println("ok"); } } catch (ClassNotFoundException | NullPointerException e) { e.printStackTrace(); } } }
多异常之间可以通过|之间进行分割。
同样需要注意的是:
1、异常之间不能存在父子关系,应该是同级关系才行。打印异常,会自动去匹配。
2、异常之间没有顺序关系。
相关文章推荐
- JDK1.7新特性之try-with-resources和catch多种异常
- ctrl+alt+t 调出try/catch等代码块
- Jdk1.7(及以上) 使用 try-with-resources 替代try-catch-finally
- JAVA 7新特性——在单个catch代码块中捕获多个异常,以及用升级版的类型检查重新抛出异常
- SQL SERVER 2012 T-SQL 新增特性之-TRY_CATCH
- JDK1.7新特性-try-with-resources语句
- 关于Try/Catch 代码块
- JDK1.7新特性try-with-resources try(){}
- Java中异常处理之try和catch代码块的使用
- JAVA 7新特性——在单个catch代码块中捕获多个异常,以及用升级版的类型检查重新抛出异常
- 黑马程序员_文件IO流部分疑点和JDK1.7版本后新try-catch处理学习笔记
- jdk1.7新特性之 try-with-resources
- java9新特性-9-语法改进:try语句
- Java try/catch/finally代码块中加入return后的执行顺序问题
- JDK1.7中的try catch新的处理方式
- try{}catch{}finally{} 里的代码的执行顺序问题
- 有return的情况下try catch finally的执行顺序
- <为知更新>java里的throws 和 try-catch 的用法
- Java try catch finally 虚拟机执行流程详解
- Java try和catch的使用