Java异常处理错误
Java异常处理错误
研究发现,在编译阶段的最佳时机错误,序之前。然而,编译期间并不能找出全部的错误,余下的问题必须在执行阶段解决。这就须要错误源通过某种方式把适当的信息传给某个接收者,该接收者知道怎样处理这个问题。
Java中的异常处理的目的在于通过使用少于眼下数量的代码来简化大型,可靠的程序的生成。而且通过这样的方式能够使你更加自信:你的应用中没有未处理的错误。
异常这个词有我对此感到意外的意思。
问题出现了,你或许不清楚该怎样处理,但你的确知道不该置之不理。你要停下来,看看是不是有别人是不是在别的地方。可以处理这个问题。仅仅是在当前的环境中还没有足够的信息来解决问题,所以把问题提交到更高级别的环境中。在这里将作出正确地决定。
使用异常所带来的还有一个相当明显的优点是:它往往可以减少错误处理代码的复杂度。假设不使用异常,那么就必须检查特定的错误。并在程序的很多地方去处理它。
而假设使用异常,就不必在方法调用处进行检查,由于异常机制将能保证捕获这个错误。并且,仅仅需在一个地方处理错误。即所谓的异常处理程序中。
这样的方式不仅节省代码,并且把“描写叙述在正常运行过程中做什么事”的代码和“出了问题怎么办”的代码相分离。
异常处理的过程:
当抛出异常之后,有几件事情会随之发生。首先,同Java中其它对象的创建一样。将使用new在堆上创建异常对象。然后,当前的执行路径被终止,而且从当前环境中弹出对异常对象的引用。
此时。异常处理机制接管程序,并開始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序,它的任务是将程序从错误状态中恢复,以使程序能要么换一种方式执行,要么继续执行下去。
import java.util.*; public class WhoCalled{ static void f(){ try{ throw new Exception(); }catch(Exception e){ for(StackTraceElement s:e.getStackTrace()) System.out.println(s.getMethodName()); } } static void g(){ f(); } static void h(){ g(); } public static void main(String[] args){ f(); System.out.println("--------------------------------------"); g(); System.out.println("--------------------------------------"); h(); } }
finally子句:
不管异常是否抛出,finally子句总能被运行。
import java.util.*; class ThreeException extends Exception{} public class FinallyWorks{ static int count=0; public static void main(String[] args){ while(true){ try{ if(count++==0) throw new ThreeException(); System.out.println("No exception"); }catch(ThreeException e){ System.out.println("ThreeException"); }finally{ System.out.println("In finally clause"); if(count==2) break; } } } }
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- java集合(3)- Java中的equals和hashCode方法详解
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
- Java 8 Documentation Download
- 【JAVA】对异常的理解及实例(不断学习,不断更新)。
- JAVA 解密M3U8 视频TS片断提示:Wrong IV length: must be 16 bytes long 解决方法
- Java异常处理(Java必备知识)
- java.lang.OutOfMemoryError异常解决方法
- java根据数据库自动生成JavaBean或pojo
- 改写java TreeMap制造方便查询的ip内存库
- 最新秋招,Java八股文!含答案,JAVA核心知识点最详细版(面试必备)
- Java-struts2的问题 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
- java.lang.Integer cannot be cast to java.math.BigDecimal
- java 资源文件的读取
- Java 并发工具包 java.util.concurrent 大全
- Java 设计模式之桥接模式,Java 桥接模式 ,java Bridge Pattern
- java声明异常(throws)
- java数组初始化
- 详解java中的数据结构
- Java学习---JAVA的类设计
- 华为OD机试 -合规数组(Java) | 机试题+算法思路+考点+代码解析 【2023】
- Java网络编程技术2
- 实操代码研究各种Java技术-java.toutiao.im
- 简单的JAVA MVC框架模式--Java-servlet-JavaBean
- Java学习路线:day16 异常处理
- 记一次未解决的异常:java.lang.NoClassDefFoundError: net/sf/json/JSONObject
- Java小白入门200例98之Java异常
- 关于Java中的异常处理