首页 / JAVA / java-异常进阶-包的使用
java-异常进阶-包的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-异常进阶-包的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2562字,纯文字阅读大概需要4分钟。
内容图文
一 finally
1.1 异常执行的顺序
package test; public class Test { public static void main(String[] args) { Demo d = new Demo(); try { d.show(-5); System.out.println("hello try"); } catch (NoShowException e) { e.printStackTrace(); System.out.println("hello catch"); } } } class NoShowException extends Exception { NoShowException(String message) { super(message); } } class Demo { void show(int num)throws NoShowException { if(num<0) thrownew NoShowException(num+",数值是非法的"); System.out.println("show ....."+num); } }
结果:
1.2 finally 作用
有一些特定的代码无论异常是否发生,都需要执行。
因为异常会引发程序跳转,导致有写语句执行不到。无法满足这个需求。
异常捕获处理时java提供解决方案。
应用场景;
定义一个功能往数据库中添加数据。 void add(Data data)throws NoAddException { // 1,连接数据库。 try { // 2,添加数据。 // 添加数据时发生了异常情况。throw new SQLException();程序跳转,就执行不到断开连接。 // 而断开连接必须要执行,因为不执行,连接资源在浪费。 // 无论是否发生问题,都需要执行断开连接的动作,从而释放资源。 }catch(SQLException e) { //解决数据库的问题。 //同时将问题告诉调用者。thrownew NoAddException(); } finally { //3,断开连接。} }
总结:finally到底什么时候用?
只要程序中使用到了具体的资源(数据库连接,IO资源,网络连接socket等)
需要释放,都必须定义在finally中。你在定义程序,只要问题发生与否,
指定程序都需要执行时,就定义finally中。
二 异常的组合方式
try catch finally 组合方式:
1 . try catch : 对代码进行异常检测,并对检测的异常传递给catch处理。
try catch : 对代码进行异常检测,并对检测的异常传递给catch处理。 异常捕获处理。 void show()//不用throws { try{ thrownew Exception(); }catch(Exception e) { } }
2. try finally : 对代码进行异常检测,检测到异常后因为没有catch,所以一样会被默认jvm抛出。
异常是没有捕获处理的。但是功能所开启资源需要进行关闭,所有finally。
只为关闭资源。
void show()//需要throws { try{ thrownew Exception(); }finally { } }
3,
try catch finally
检测异常,并传递给catch处理,并定义资源释放。
4,try catch1 catch2 catch3......
class ExceptionDemo10 { public static void main(String[] args) { System. out.println("Hello World!"); } }
三 异常在继承或实现的细节
异常在继承或者实现中的使用细节:★★★★★
1,子类覆盖父类方法时,如果父类的方法声明异常,子类只能声明父类异常或者该异常的子类,或者不声明。
2,当父类方法声明多个异常时,子类覆盖时只能声明多个异常的子集。
3,当被覆盖的方法没有异常声明时,子类覆盖时时无法声明异常的。
举例:父类存在这种情况,接口也有这种情况,
问题:接口中没有声明异常,而实现的子类覆盖方法时发生了异常,怎么办?
无法进行throws声明,只能catch的捕获。万一问题处理不了呢?catch中继续throw抛出,但是只能将异常转换成RuntimeException子类抛出。
1,子类覆盖父类方法时,如果父类的方法声明异常,子类只能声明父类异常或者该异常的子类,或者不声明。
原因:如是不是这样,会发生类型转换异常.具体看下面代码讲解
下面红色部分产生类型转换异常 //AException ex = new BException();
ps:父类有问题了,在覆盖的时候子类不能有更多的问题
Exception |--AException |--AAException |--BException class AException extends Exception { } class BException extends Exception { } class AAException extends AException { } class Fu { void show() { } } class Tool { void method(Fu f)//Fu f = new Zi(); { try { f.show(); } catch (AException ex)//AException ex = new BException(); { } } } Tool t = new Tool(); //t.method(new Fu()); t.method(new Zi()); class Zi extends Fu { void show()throws BException
{ } }
四 包
原文:https://www.cnblogs.com/liu-wang/p/8266485.html
内容总结
以上是互联网集市为您收集整理的java-异常进阶-包的使用全部内容,希望文章能够帮你解决java-异常进阶-包的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。