( throw Exception
) 和 ( return value
) 如何在 Java 或 C# 等语言中实现?我想知道它的支持如何包含在语言中的机制,而不仅仅是try { .... } catch (Exception) {}
.
我们知道什么时候调用一个函数,即
public void doSomething() {
....
....
return;
}
然后 on 调用被放入堆栈,当方法返回时调用doSomething
on stack 弹出。
在 return 语句返回一个值的情况下会发生什么,比如说return 4;
,doSomething()
堆栈上的调用弹出,并且 Prog 计数器上的下一条语句得到处理?返回值发生了什么?它在哪里保存以及如何使用?
类似地,在抛出异常的情况下,throw ex;
语句在堆栈上找到适当的catch
语句,直到找到它,它才会不断从堆栈中弹出东西……这个机制是如何工作的?