- 浏览: 59273 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
shifulong:
cywhoyi 写道现在用Javassist代理也不错的看了一 ...
java动态代理(jdk &cglib) -
cywhoyi:
现在用Javassist代理也不错的
java动态代理(jdk &cglib)
Throwable
Exception
RuntimeException 可以捕获,也可以不捕获(NullPointerException,ArrayIndexOutOfBoundException等)
非运行时异常 必须捕获,否则编译报错
Error
编译器不要求强制处理(如OutOfMemoryError)
throw throws的区别
throw代码中使用,抛出异常
throws声明方法时使用
如果你的答案是这个,那就错了
i=2
i=1
testEx2, catch exception
testEx2, finally; return value=false
testEx1, catch exception
testEx1, finally; return value=false
testEx, catch exception
testEx, finally; return value=false
上面的测试代码有 两个坑
1,i/0 会抛出一个运行时异常即RunntimeException,可以捕获也可以不捕获
2,testEx2 catch 中的 throw 相当于一个结束语句,在执行完finally语句块之后才会被执行,
but...finally中 已经 return结束 (或者 再次throw),catch 中的 throw不会执行 也就不会抛出异常,testEx1中也不会接收异常
正确的打印结果
i=2
i=1
testEx2, catch exception
testEx2, finally; return value=false
testEx1, finally; return value=false
testEx, finally; return value=false
最后附一张高清图片
Exception
RuntimeException 可以捕获,也可以不捕获(NullPointerException,ArrayIndexOutOfBoundException等)
非运行时异常 必须捕获,否则编译报错
Error
编译器不要求强制处理(如OutOfMemoryError)
throw throws的区别
throw代码中使用,抛出异常
throws声明方法时使用
public class Test { public Test() { } boolean testEx() throws Exception { boolean ret = true; try { ret = testEx1(); } catch (Exception e) { System.out.println("testEx, catch exception"); ret = false; throw e; } finally { System.out.println("testEx, finally; return value=" + ret); return ret; } } boolean testEx1() throws Exception { boolean ret = true; try { ret = testEx2(); if (!ret) { return false; } System.out.println("testEx1, at the end of try"); return ret; } catch (Exception e) { System.out.println("testEx1, catch exception"); ret = false; throw e; } finally { System.out.println("testEx1, finally; return value=" + ret); return ret; } } boolean testEx2() throws Exception { boolean ret = true; try { int b = 12; int c; for (int i = 2; i >= -2; i--) { c = b / i; System.out.println("i=" + i); } return true; } catch (Exception e) { System.out.println("testEx2, catch exception"); ret = false; throw e; } finally { System.out.println("testEx2, finally; return value=" + ret); return ret; } } public static void main(String[] args) { String s = new String(new char[1 << 30]); Test test = new Test(); try { test.testEx(); } catch (Exception e) { e.printStackTrace(); } } }
如果你的答案是这个,那就错了
i=2
i=1
testEx2, catch exception
testEx2, finally; return value=false
testEx1, catch exception
testEx1, finally; return value=false
testEx, catch exception
testEx, finally; return value=false
上面的测试代码有 两个坑
1,i/0 会抛出一个运行时异常即RunntimeException,可以捕获也可以不捕获
2,testEx2 catch 中的 throw 相当于一个结束语句,在执行完finally语句块之后才会被执行,
but...finally中 已经 return结束 (或者 再次throw),catch 中的 throw不会执行 也就不会抛出异常,testEx1中也不会接收异常
正确的打印结果
i=2
i=1
testEx2, catch exception
testEx2, finally; return value=false
testEx1, finally; return value=false
testEx, finally; return value=false
最后附一张高清图片
发表评论
-
test
2016-02-26 17:45 487http://c.hiphotos.baidu.com/t ... -
java Integer的比较
2016-01-18 20:09 1076/** * A constant ... -
load过高排查
2016-01-07 19:15 1134jstack 线程的运行情况、线程的状态 load过高的 ... -
Runnable Callable Future FutrueTask ExecutorService的关系
2015-11-30 16:34 702public interface ExecutorSe ... -
单例模式以及序列化仍然单例的问题
2015-11-18 10:47 588这种方式仍然存在并发的同步阻塞问题,并且jdk1.5之 ... -
linux5种网络IO模型
2015-11-07 21:58 896看网上书上的各种解释太绕口难理解了,看到个例子挺好的。 ... -
nio学习记录 : start(buffer channel selector)
2015-11-06 22:17 758Buffer的capacity,limit,positio ... -
desgn partten : 适配器&门面
2015-11-05 11:55 616adapter adapter 一个接口转换成另一个接 ... -
java泛型中的PECS
2015-10-26 17:58 1028extends List<? extends Nu ... -
spring自定义cache
2015-10-21 17:14 4559下面是一个较为详细的spring缓存的介绍 http:/ ... -
spring各种接口的作用FactoryBean、ApplicationContextAware、InitializingBean
2015-10-20 20:04 3044FactoryBean 当配置文件中<bean&g ... -
jvm调试命令
2015-10-14 15:42 508jps jps -mlv 列出当前jvm进程 ji ... -
CAS自定义线程安全的计数器
2015-10-10 17:36 2211写了一个线程安全的计数器(用锁显得多没有水平),非阻塞的,通过 ... -
java线程遇见的一个小问题(本质和线程无关都是基础知识)
2015-09-21 10:29 570猜猜下面几个程序,那个是线程安全的 NO1 public cl ... -
JUC--Parser
2015-09-08 16:27 693Java 7的并发包中推出了Phaser,其功能跟Cyclic ... -
JUC--Exchanger
2015-09-07 17:26 899Exchanger 用于线程之间数据交换,通过exchange ... -
java浮点型float遇到的一点问题
2015-04-10 16:32 686float 可以除以0,还可以不是一个数字 即Float.is ... -
java静态块的一个小坑
2015-04-07 18:26 661public class Student { pr ... -
java学习计划
2015-04-07 17:57 442刚入职的时候,team大神给制定的学习计划。 受益匪浅啊 ... -
购物网站(spring+mybatis+velocity+maven)项目
2015-04-03 18:06 1013原文地址: http://www.iteye.com/top ...
相关推荐
### Java异常处理总结 #### 一、Java异常的基础知识 在Java编程中,异常处理是一项极其重要的技术。异常处理能够帮助开发者优雅地处理程序运行时遇到的问题,避免程序崩溃,并提供给用户友好的反馈信息。 **什么...
下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出异常的关键字是 `throw`。 * `try`、`catch` 和 `finally` 是 Java 异常处理的三个主要组成部分。 二、异常处理机制 *...
### Java异常总结 #### 一、Java异常概述 在Java编程语言中,异常处理机制是一项非常重要的特性。它提供了一种方法来响应错误条件,并且能够有效地管理程序运行时可能出现的各种异常情况。Java中的异常主要分为两...
### Java常见异常总结 在Java开发过程中,遇到各种异常是在所难免的。为了更好地理解和处理这些异常,本文将详细介绍几种常见的Java异常类型及其处理方法。 #### 1. `java.lang.NullPointerException` - **异常...
通过对这些文档《java web 开发问题总结》的深入学习,我们可以更好地理解和解决实际开发中遇到的Java异常问题,提升代码质量,确保应用程序的稳定运行。无论是对于初学者还是经验丰富的开发者,掌握好Java异常处理...
下面将深入探讨在Java基础测试中常见的异常问题及其解决方案,尤其关注那些在执行基本Java程序时可能遇到的异常情况。 ### 1. "java' is not recognized as an internal or external command 这种情况通常发生在...
总结,Java异常框架是保证程序健壮性和可维护性的重要部分,它提供了优雅的方式来处理错误情况,同时允许代码的结构保持清晰。对于Web服务开发,如使用Jersey,异常处理更加关键,因为它直接关联到对外接口的响应...
下面我们来总结一些常见的Java异常: 1. java.lang.NullPointerException 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常...
以下是对Java异常处理的一些误区和经验总结。 **误区一:过度使用try-catch块** 有些开发者习惯于在每个函数的开始部分都套用try-catch块,以为这样可以捕捉所有可能出现的异常。实际上,这种做法使得代码变得混乱...
总结来说,Java异常处理机制提供了一种结构化的方法来处理程序运行时的错误,通过try-catch-finally结构捕获和处理异常,同时,利用断言进行内部逻辑验证,以及日志记录来跟踪程序行为。这样的机制增强了代码的健壮...
Java异常处理是软件开发中不可或缺的一部分,它帮助程序员有效地处理程序运行过程中可能出现的问题。通过了解不同类型的异常以及如何使用Java的关键字来处理这些异常,开发者能够构建更加健壮的应用程序。此外,正确...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本实验报告“java实验报告4-异常处理”旨在帮助初学者掌握Java中的异常处理机制,以及如何利用log4j进行日志...
### Java异常学习总结 #### 一、Java异常概述与分类 在Java开发中,异常处理是确保程序稳定性和健壮性的关键部分。本篇总结了Java异常的基本概念、分类及处理方式等内容,对于从事Java开发的技术人员具有重要的...
个人关于java异常处理的思维导图总结。0积分下载。如果认为有帮助,请关注点赞,日后还有更多免费资源。敬请关注。
本文主要总结了Java异常处理机制及其相关知识点。 首先,异常机制是Java中用于处理程序运行时错误的框架。当程序执行过程中遇到问题,异常机制会提供一个安全的出口,使得程序控制权能够转移到预先定义的异常处理器...