/**
* 1、不管try块、catch块中是否有return语句,finally块都会执行。
* 2、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),
* 所以如果finally块中有return语句,
* Eclipse编译器会报警告“finally block does not complete normally”。
* 3、如果finally块中包含了return语句,即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,
* 而是会得到finally块的返回值,并且不会捕获异常。
* @author Administrator
*
*/
public class TestEx {
public TestEx() {
}
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) {
TestEx testException1 = new TestEx();
try {
testException1.testEx();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
4. **编写测试方法**:在测试类中,创建一个会抛出异常的方法,并使用断言确保AOP通知被正确执行。 总结一下,"aop+exception"的测试代码主要涉及Spring AOP中的异常处理,可能涵盖了定义切面、通知、事务管理和...
Mockito是一个流行的Java mock库,它允许我们创建模拟对象,以便在测试中控制它们的行为。 6. **测试覆盖率**:工具如JaCoCo或Cobertura可以衡量代码被测试的程度,帮助开发者了解哪些部分的代码尚未被充分测试。 ...
新建一个项目叫JUnitTest,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。 首先,我们编写一个Calculator类: ```java public class Calculator ...
例如,`@Test`注解表示一个方法是测试方法,`@Before`和`@After`分别用于在每个测试方法之前和之后执行初始化和清理操作。 2. **异常测试**:使用`@Test(expected = Exception.class)`可以指定测试方法应该抛出特定...
TestNG是Java领域的一个新兴的测试框架,它是"Testing Next Generation"的缩写,意为下一代测试技术。TestNG与传统的JUnit测试框架不同,它提供了更多高级的测试功能,比如并行测试、参数化测试、测试依赖管理、灵活...
JUnit是一个流行的Java单元测试框架,由Ernst Bier和Kent Beck在1997年创建,目前发展到第4版本(4.12)。JUnit 4引入了许多新特性,如注解(annotations)、参数化测试、异常测试、测试规则等,使得编写和组织测试...
在进行“exception测试”时,我们通常会编写测试用例来模拟可能导致异常的情况,以确保程序能够正确处理这些异常。这包括: - 验证是否正确抛出了预期的异常类型。 - 检查异常消息是否包含足够的信息帮助调试。 - ...
### 编写一个JAVA的队列类 #### 概述 队列是一种基本的数据结构,遵循先进先出(FIFO)原则,即最先加入队列的元素将最先被移除。队列通常用于多线程编程、任务调度、缓存管理等场景。本文将详细介绍如何在Java中...
ColoredPoint.java 一个测试用子类 common.java 一个公用类 derive.java 一个测试用子类 differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 ...
TestNG是Java测试领域的一款重要框架...对于任何希望提升Java测试技能,特别是对自动化测试感兴趣的开发者来说,这是一个宝贵的资源。通过学习TestNG,你将能够构建更高效、更健壮的测试框架,确保软件的质量和稳定性。
9. **算术表达式**:一个复杂的算术表达式可能包含多个操作符和操作数,例如 `int x = (a + b) * (c - d) / e;` 这样的表达式需要根据运算符的优先级和结合性来正确解析。 10. **变量作用域**:在进行上机实践时,...
JUnit是一个开源的Java库,专门用于编写和运行Java程序的单元测试。它提供了丰富的注解、断言方法和测试套件管理,使得测试代码编写简洁,易于理解和维护。首先,让我们了解JUnit的核心概念和关键特性: 1. **测试...
下面将深入探讨在Java基础测试中常见的异常问题及其解决方案,尤其关注那些在执行基本Java程序时可能遇到的异常情况。 ### 1. "java' is not recognized as an internal or external command 这种情况通常发生在...
Java单元测试是软件开发过程中的一个关键环节,它主要用于验证代码的各个独立模块是否按预期工作。JUnit是Java领域中最广泛使用的单元测试框架,它提供了一套简洁且强大的API来编写和运行测试用例。 首先,我们需要...
- **继承**:一个类可以继承另一个类的属性和方法,实现代码复用。Java只支持单继承,但可以使用接口实现多重继承的效果。 - **多态**:多态允许子类对象可以被当作父类对象处理,提供了一种灵活的设计方式,增强...
5. **异常测试(Exception Testing)**:可以使用 `expected` 属性指定一个期望抛出的异常类型,如果测试方法没有抛出预期的异常,测试将失败。 6. **超时测试(Timeouts)**:可以为测试方法设定超时限制,如果...
为了满足生成详细知识点的要求,我们将基于这些信息,构建一个假设的情境,并围绕JAVA相关的知识点进行展开。 ### IKM在线测试JAVA知识点解析 #### 1. 基础概念 - **Java语言简介**:Java是一种广泛使用的面向对象...
JUnit是一个流行的、开源的Java单元测试框架,它使得开发者能够方便地编写和执行针对Java类的测试用例。本压缩包文件"javaweb中.java文件测试需要的框架(junit测试).rar"显然是为了帮助开发者理解如何在Java Web...
单元测试是对程序中的最小可测试部分——通常是一个函数或方法——进行检查,确保其按照预期工作。JUnit作为Java生态的一部分,极大地提高了开发效率和代码质量。 在Java开发中,JUnit的重要性不言而喻。它提供了...