Java 异常处理 (Exception Handling)

1. Never return in a finally statement.

If you return in a finally block then any Throwables that aren‘t caught will be completely lost.

e.g.

 1 // "Done!" will be print out, but there is no "Got it."
 2 public class Test {
 3   public static void main(String[] args) {
 4     try {
 5       doSomething();
 6       System.out.println("Done!");
 7     } catch (RuntimeException e) {
 8       System.out.println("Got it.");
 9     }
10   }
11
12   public static void doSomething() {
13     try {
14       throw new RuntimeException();
15     } finally {
16       return;
17     }
18   }
19 }

2. If return in try/catch, changes in finally will not affect return value.

finally black run before return, but the return value will be copied.

 1 // print "123"
 2 public class Test {
 3     public static void main(String[] args) {
 4         System.out.println(getString());
 5     }
 6
 7     public static String getString() {
 8         String str = "123";
 9         try {
10             throw new Exception();
11         } catch (Exception e) {
12             return str;
13         } finally {
14             str = "456";
15         }
16     }
17 }
时间: 2024-10-12 15:47:41

Java 异常处理 (Exception Handling)的相关文章

java异常处理Exception

我看别人的面经中有一道题目就问到了Exception,即java的异常处理的,我以前也学了java的异常处理,但是我查了下,看了别人的博客关于写的exception异常处理,我发现,自己学的不牢固,只学到了一点皮毛而已,在看了那么多博客和资料后,我做下总结吧,不然我大脑都混乱了. java的中异常祖先是Throwable,Throwable的直接子类是Exception和Error. Error通过单词我们就知道,是错误的意思,这种错误一般是jvm运行产生的错误,出现这种错误,我们的程序不能解决

Akka(26): Stream:异常处理-Exception handling

akka-stream是基于Actor模式的,所以也继承了Actor模式的“坚韧性(resilient)”特点,在任何异常情况下都有某种整体统一的异常处理策略和具体实施方式.在akka-stream的官方文件中都有详细的说明和示范例子.我们在这篇讨论里也没有什么更好的想法和范例,也只能略做一些字面翻译和分析理解的事了.下面列出了akka-stream处理异常的一些实用方法: 1.recover:这是一个函数,发出数据流最后一个元素然后根据上游发生的异常终止当前数据流 2.recoverWithR

深入理解Java异常处理机制 (笼统篇)

开篇 1.异常处理(Exception Handling): 就是一种解决这一问题的机制,能够较好地处理程序不能正常运行的情况. 2.异常(Exception): 是程序在运行时可能出现的会导致程序运行终止的错误.这种错误是不能通过编译系统检查出来的. 3.常见异常如下: (1)系统资源不足.例如,内存不足,不可以动态申请内存空间:磁盘空间不足,不能打开新的输出文件等. (2)用户操作错误导致运算关系不正确.例如,出现分母为0.数学运算溢出,数组越界,参数类型不能转换等. 4.异常例子: 在C+

Java自定义Exception

原文地址:http://my.oschina.net/liuzeli/blog/351280 这里总结一下Java的Exception,并实现一个自定义Exception类. 总结: Throwable对象分为两种类型:Error(表示编译时和系统错误):Exception(在Java类库.用户方法以及运行时故障中抛出的异常). Exception细分成两种异常:受检查异常(如,IOException, SQLException等.在编译时要被强制检查的异常,需要用try, catch, fin

SEH(structured exception handling)基础篇---终止处理程序

前序:最近看SEH看的头晕脑胀/(ㄒoㄒ)/~~,SEH最开始是Windows提供的异常处理机制,只是一个简单的框架,而我们现在使用的SEH都是编译器已经在系统提供的最基础的框架上做了修改的增强版(原始版比较原始,牵扯到大量Windows基础知识,并且需要反汇编看汇编代码来理解....本人现在功力较浅,需要慢慢消化,先看一下增强版,通过C和C++来接触一下. SEH包含两部分功能:终止处理(termination handling)和异常处理(exception handling).在这先讲一下

Java异常处理总结Exception\Error

Java异常处理总结Exception\Error 2012-12-28 08:17:17|  分类: JAVA |  标签:java  |举报|字号 订阅 Java异常处理总结 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,

OAF_OAF Exception Handling异常处理(概念)

2014-06-12 BaoXinjian 一.摘要 Oracle Application Framework将异常分为三类 异常类型type 1. 常规异常General Exception Class:oracle.apps.fnd.framework.OAException Function: 提供了在运行时刻同时显示多种类型异常的手段,结合EBS的Message,可显示有用的信息 2. 验证异常Validation Exception Class:oracle.apps.fnd.fram

Exception Handling in ASP.NET Web API webapi异常处理

原文:http://www.asp.net/web-api/overview/error-handling/exception-handling This article describes error and exception handling in ASP.NET Web API. HttpResponseException Exception Filters Registering Exception Filters HttpError HttpResponseException Wha

Java的Exception和Error面试题10问10答

在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它成为面试题中的常客.关于Java中Error和Exception的面试题目多是关于Exception和Error的概念,如何处理Exception,以及 处理Exception时需要遵守的最佳实践等等.尽管关于多线程.垃圾回收.JVM概念和面向对象设计等方面的问题依然主宰着这类面试,你仍然需要为回答

Java提高篇——Java 异常处理

异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常. 异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据. 要打开的文件不存在. 网络通信时连接中断,或者JVM内存溢出. 这些异常有的是因为用户错误