Java中的异常注意点
2016-04-27 10:01
435 查看
在java中 使用throw关键字抛出异常 使用throws关键字声明异常
throw关键字是将异常在自己方法中解决 throws关键字是将异常声明出来,让其调用方去解决,如果其调用方是main方法,
其同样使用throws声明异常,那么此异常将会交给java虚拟内部解决。
子类方法不能比父类抛出更多的异常
例如:父类A中的方法Run()没有异常抛出,
那么在类B中重写A类中的Run()方法时就必须要使用try-catch进行环绕解决编译报红,而不能够使用throws将异常声明出去。
捕获异常的过程中需要注意的事情:重点: 无论何时finally块代码都会执行,除非一种情况下:
在try或是catch块中出现了System.exit(0) 这一代码
注意在捕获异常的过程中如果有了return的存在的特殊情况(不推荐此中方法写代码):
Say() 的finally中return一个值,等同于告诉编译器该方法没有异常,但实际上异常是有的,这样的结果是该方法的调用者却捕获不到异常,相对于异常被无端的被吃掉了.
结论:不要再finally中试图return一个值,这样可能会导致一些意想不到的逻辑错误,finally就是用来释放资源的!
public static void main(String[] args) throws Exception{try { //将一个类的全限定名字符串转换成内存中该类对应的字节码文件 //Sql Server 连接方式1 //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //MySql 连接方式2 //Class.forName("com.mysql.jdbc.Driver"); //Oracle 连接方式3 Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); throw new Exception("相关异常"); }
throw关键字是将异常在自己方法中解决 throws关键字是将异常声明出来,让其调用方去解决,如果其调用方是main方法,
其同样使用throws声明异常,那么此异常将会交给java虚拟内部解决。
子类方法不能比父类抛出更多的异常
例如:父类A中的方法Run()没有异常抛出,
那么在类B中重写A类中的Run()方法时就必须要使用try-catch进行环绕解决编译报红,而不能够使用throws将异常声明出去。
捕获异常的过程中需要注意的事情:重点: 无论何时finally块代码都会执行,除非一种情况下:
在try或是catch块中出现了System.exit(0) 这一代码
注意在捕获异常的过程中如果有了return的存在的特殊情况(不推荐此中方法写代码):
public static void main(String[] args) throws Exception { try { Say(); } catch (Exception e) { e.printStackTrace(); } finally{ System.out.println("finally over"); } } static void Say() throws Exception{ try { int num = 2/0; } catch (Exception e) { //System.out.println("报错了"); //System.out.println(e); throw new Exception("报错了2");//此处只是将异常封存在了内存中并没有输出错误信息。 }finally{ System.out.println("结束了"); //return; //此处的return语句会跳出当前try-catch块 结束本方法且不会抛出异常(直接将此catch中的异常吞掉!)。 } }
Say() 的finally中return一个值,等同于告诉编译器该方法没有异常,但实际上异常是有的,这样的结果是该方法的调用者却捕获不到异常,相对于异常被无端的被吃掉了.
结论:不要再finally中试图return一个值,这样可能会导致一些意想不到的逻辑错误,finally就是用来释放资源的!
相关文章推荐
- Maven那点事儿(Eclipse版)
- 解决mac10.11 提示的未安装java1.6的问题
- Java集合---HashMap源码剖析
- java.net.BindException: Address already in use解决方法
- Spring 4支持的Java 8新特性一览
- 解决Please ensure that adb is correctly located at 'D:\java\sdk\platform-tools\adb.exe' and can be exe
- Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)
- HBase的Java接口基本操作:创建表插入查询删除
- HDFS原理、命令行接口和Java接口
- java编译出错信息汇总(更新)
- Spring的事务管理
- 72、java中如何取得当天是本年的第多少周?
- Java对XML文档的增删改查
- java spring中对properties属性文件加密及其解密
- Java核心技术(二) —— Java的基本程序设计结构
- java项目打包成exe文件
- springMVC ---- 拦截器
- eclipse启动一直显示 Initializing Java Tooling 1%
- java代理模式(转)
- Java概念和理论的理解(总结)