[英]Java: Is catching exceptions asynchronous?
我问是因为如果不是,它可能会被滥用为同步机制。 我在问Java。
我不确定“被滥用为同步机制”是什么意思-这没有道理。
每个线程都有异常-引发异常时,当前线程的执行将跳至捕获异常的地方。 如果根本没有捕获到该线程,则该线程死亡。 其他线程不受影响。
大多数异常是由于它们所发生的线程的操作而同步发生的,并且在程序中的某个位置被指定可能导致此类异常。 相反,异步异常是在程序执行的任何时候都可能发生的异常。
如果要生成高质量的机器代码,则必须正确理解异步异常的语义。
异步异常很少见 。 它们仅由于以下原因而发生:
- 调用Thread或ThreadGroup类的
stop
方法- Java虚拟机中的内部错误
因此,虽然不是很罕见,但并非所有的Exception
处理都是同步的。
不,它是同步的。
尝试使用调试器单步执行代码,您将看到它逐行执行,并且如果您在陷阱内中断,它将不会继续执行。
在线程执行期间发生异常。 异步捕获是没有意义的,因为线程必须处理异常。 在捕获并处理异常之前,它无法继续进行。 如果未捕获或引发异常,则线程不知道它必须做什么,并且简单死掉,程序可能/可能不会行为不当。
线程引发异常,然后不等待捕获就继续执行没有意义。
要回答您的问题,就所有实际目的而言,捕获都不是异步的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.