0 0

Exception 是内部是怎么执行的?10

public class Test {
public static void main(String[] args) {

System.out.println(Math.ceil(999));
System.out.println(Math.ceil(5.0));
System.out.println();
new RuntimeException("exception").printStackTrace();
System.out.println();
System.out.println(Math.ceil(5.0));
System.out.println(Math.ceil(5.0));
System.out.println(Math.ceil(5.0));

}
}

这个类的运行结果中,为什么打印出来的RuntimeException的地方不一样?
感觉是随机出现的。结果如下:
999.0
5.0


5.0
5.0
5.0
java.lang.RuntimeException: exception
at com.david.cc.Test.main(Test.java:18)

=========================================================
java.lang.RuntimeException: exception
at com.david.cc.Test.main(Test.java:18)
999.0
5.0


5.0
5.0
5.0
===========================================================
999.0
5.0

java.lang.RuntimeException: exception
5.0
5.0

at com.david.cc.Test.main(Test.java:18)
5.0



问题补充:System.out,标准输出设备会缓冲显示屏,如果用System.err,标准错误设备就不缓冲显示屏。
改用System.err 就会严格按顺序输出。
应该是这个原因吧?
OO 
2011年10月19日 14:33

1个答案 按时间排序 按投票排序

0 0

采纳的答案

Throwable.printStackTrace()方法是通过System.err打印的,所以和System.out的打印是可能会出现问题的。
如果要严格控制打印输出地话请这样使用:

Throwable.printStackTrace(System.out);

2011年10月19日 14:47

相关推荐

    解决Exception java.sql.SQLException ORA-00600 内部错误代码

    在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码

    error与Exception的区别

    而`Checked Exception`(如`IOException`、`SQLException`)则必须在方法签名中声明或者在方法体内部捕获,以确保调用者能够处理或知道可能出现的问题。 总的来说,理解并区分`error`和`exception`对于编写健壮的...

    java Exception

    无论是否发生异常,`finally`块中的代码总会被执行,这使得`finally`块非常适合用来执行清理工作,如关闭文件流、数据库连接等。 ```java try { // 可能抛出异常的代码 } catch (Exception e) { // 处理异常 } ...

    Android Native Exception

    当Native代码中发生异常时,会触发一系列的内部流程来捕获和处理这个异常: - **异常捕捉**: 当处理器检测到异常时,它会跳转到预定义的异常处理程序入口点。例如,在ARM架构下,异常处理程序通常位于`entry-armv.S...

    Checked and Unchecked Exception

    了解异常处理机制的源码可以帮助开发者深入理解Java的内部工作原理,例如,可以查看 `Exception` 类及其子类的源代码,了解异常是如何被创建、抛出和捕获的。此外,开发工具,如Eclipse和IntelliJ IDEA,提供了便捷...

    axis2 InvocationTargetException

    如果方法内部抛出了异常,但没有被捕获和处理,就会导致InvocationTargetException。 3. **数据验证**:确保传入服务的方法参数有效且符合预期。无效或不匹配的数据类型可能导致运行时异常。 4. **配置检查**:...

    Exception

    异常是程序执行过程中出现的非正常状态,可能是由于逻辑错误、资源不足或者外部条件不满足等原因导致。处理异常是确保程序健壮性的重要手段,它允许开发者优雅地处理错误,而不是让程序突然崩溃。 描述中的链接指向...

    Oracle Exception汇总(自定义Oracle异常)

    为了避免程序中断,可以使用`EXCEPTION WHEN NO_DATA_FOUND THEN`来捕获并处理这个异常。 2. **TOO_MANY_ROWS** (ORA-01422): 当`SELECT INTO`语句返回多于一行数据时,会出现此异常。在处理时,通常需要修改查询以...

    c# 自定义异常 Exception

    `Exception`类是所有系统异常的基类,包含了描述错误的基本属性,如`Message`(错误消息)和`InnerException`(内部异常)。以下是一个简单的自定义异常类的示例: ```csharp public class CustomException : ...

    VC++exception handling

    如果在`try`块内部发生异常,控制流会立即跳转到相应的`catch`块。 2. **`catch`块**:`catch`块用于捕获特定类型的异常。你可以定义多个`catch`块来处理不同类型的异常。一旦找到匹配的`catch`块,程序就会在该块...

    Exception C++ 和 More Exception C++

    如果函数内部确实抛出了异常,编译器将产生错误,除非使用了`noexcept(false)`声明函数可能会抛出异常。 7. 异常规范: 通过`throw()`或`throw(expression_list)`可以为函数指定异常规范,告诉编译器函数预期可能...

    aop+exception的测试代码

    通常,我们可以定义一个异常通知(exception advice),当方法抛出异常时执行。这有助于保持业务逻辑的整洁,避免在每个方法中都包含异常处理代码。Spring AOP提供了多种类型的异常通知,例如: 1. `@AfterThrowing...

    java 除0发生的算术异常(ArithmeticException)

    在Java编程语言中,当你尝试执行一个除以零的操作时,会抛出一个`ArithmeticException`。这个异常属于运行时异常,表明程序试图进行一个非法或无意义的数学运算,比如整数除以零。在Java中,任何类型的数字(无论是...

    C++Exception 异常处理 源码

    如果在`catch`块内部再次抛出异常,原始的异常会被丢弃,新的异常会替代它继续传播。这可以通过`throw;`语句来实现,它不创建新异常,而是重新抛出已捕获的异常。 9. **`std::current_exception`和`std::rethrow_...

    Uncaught DOMException:

    `influx_inspect.exe`通常是InfluxDB的一个实用工具,用于检查数据库的内部结构和元数据,帮助用户诊断问题或导出数据。`influx_stress.exe`可能是一个压力测试工具,用于模拟大量写入和查询负载,以评估InfluxDB在...

    Interrupt and Exception

    而异常(Exception)则是由软件或者硬件产生的特定事件,它导致了处理器的异常响应。本文将详细介绍中断与异常的概念、分类、处理机制及其在Windows操作系统中的实现方式。 #### 二、中断与异常的基础概念 **中断*...

    解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException

    标题中的“解决axis2-CodegenWizardPluginBUG- java.lang.reflect.Invocation...同时,理解`InvocationTargetException`的原理和用途也是解决问题的关键,它只是一个指示器,真正的问题隐藏在其内部抛出的异常中。

    Exception.doc

    这可能是因为你在这些方法中执行了其他模块的数据库操作,或者在这些方法内部有循环依赖。 解决这个问题的方法是确保在`onCreate()`、`onUpgrade()`以及`onDowngrade()`方法中避免直接调用`getWritableDatabase()`...

    Error类和Exception类剖析

    这些错误通常是由于系统资源耗尽、JVM内部错误或硬件故障等外部因素引起的,通常不是程序员能够控制的。 2. 与Exception不同,Error通常不会在应用程序级别被捕获和处理。而是期望在系统级别进行处理,或者由JVM...

Global site tag (gtag.js) - Google Analytics