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异常处理错误的更多相关文章

  1. Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序

    文章的标题看似自相矛盾,然而我在"正确"二字上打了引号.我们来看一个例子,关于Java异常处理(Exception Handling)的一些知识点. 看下面这段程序.方法pleas ...

  2. 札记:Java异常处理

    异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...

  3. Java 异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用System.out ...

  4. 《转载》Java异常处理的10个最佳实践

    本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...

  5. JAVA 异常处理机制

    主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...

  6. Java异常处理和设计

    在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻 ...

  7. 深入理解java异常处理机制

       异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的 ...

  8. Java提高篇——Java 异常处理

    异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用Syst ...

  9. java异常处理的设计

    有一句这样话:一个衡量Java设计师水平和开发团队纪律性的好方法就是读读他们应用程序里的异常处理代码. 本文主要讨论开发Java程序时,如何设计异常处理的代码,如何时抛异常,捕获到了怎么处理,而不是讲 ...

随机推荐

  1. java I/O库的设计模式

    在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式.      在任何一种计算机语言中,输入/输出都是一个很重要的部分.与一般的计算机语言相比,java将输入/输出的功能和使 ...

  2. 菜单之二:使用xml文件定义菜单 分类: H1_ANDROID 2013-11-03 09:39 1038人阅读 评论(0) 收藏

    参考<疯狂android讲义>2.10节 P174,参见归档project:XmlMenuDemo.zip 一般推荐使用XML文件定义菜单. 基本步骤如下: 1.定义布局文件 为简单显示原 ...

  3. php汉字 字节数组转换

    <?php function stringToByteArray($str,$charset) { $str = iconv($charset,'UTF-16',$str); preg_matc ...

  4. [React] Update State in React with Ramda's Evolve

    In this lesson we'll take a stateful React component and look at how we can refactor our setState ca ...

  5. 设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹

    原文:设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/the_victory/artic ...

  6. 深度学习基础(十二)—— ReLU vs PReLU

    从算法的命名上来说,PReLU 是对 ReLU 的进一步限制,事实上 PReLU(Parametric Rectified Linear Unit),也即 PReLU 是增加了参数修正的 ReLU. ...

  7. RGB 的调色

    通过 RGB 三通道所占比的组合(通过三元素长的元组存储),可呈现丰富的色彩样式: [0, 0, 0] ⇒ 黑色,[1, 1, 1] ⇒ 白色 [1, 0, 0] ⇒ 红色,[0, 1, 0] ⇒ 绿 ...

  8. 开源:通用的日志分析工具(LogViewer)

    工具介绍 本工具最早是制作出来查看我的 FTL(Fast Trace Log) 二进制日志文件的, 后来因为去做Java后台,经常看 SpringBoot, Tomcat 等的日志, 就简单重构了一下 ...

  9. 【17.07%】【codeforces 583D】Once Again...

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  10. 【26.67%】【codeforces 596C】Wilbur and Points

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...