C# 调用和调用方法之间的区别是什么?

C# 调用和调用方法之间的区别是什么?,c#,C#,我对调用和调用方法感到非常困惑。我读过一本关于c异常处理的书。我曾经面对过打电话和打电话的人说我没能得到它。当然,我在谷歌上搜索了一下,找到了一个关于打电话的链接,然后又打了一个电话,但我还是没有找到 未处理的异常 如果try块抛出异常会发生什么 并且没有相应的捕获处理程序?在前面的示例中, lhsOperand文本框可能包含该字符串 有效整数的表示形式,但它表示的整数为 例如,在C支持的有效整数范围之外, “2147483648”. 在本例中,int.Parse语句将抛出 OverflowEx

我对调用和调用方法感到非常困惑。我读过一本关于c异常处理的书。我曾经面对过打电话和打电话的人说我没能得到它。当然,我在谷歌上搜索了一下,找到了一个关于打电话的链接,然后又打了一个电话,但我还是没有找到

未处理的异常

如果try块抛出异常会发生什么 并且没有相应的捕获处理程序?在前面的示例中, lhsOperand文本框可能包含该字符串 有效整数的表示形式,但它表示的整数为 例如,在C支持的有效整数范围之外, “2147483648”. 在本例中,int.Parse语句将抛出 OverflowException,FormatException不会捕获它 接球手。如果出现这种情况,并且try块是方法的一部分, 该方法立即退出,执行返回到调用 方法如果调用方法使用try块,则运行时将尝试 找到并执行此try块的匹配catch处理程序。如果 调用方法不使用try块,或者如果没有匹配 catch处理程序,调用方法立即退出并执行 返回其调用者,在那里重复该过程。如果匹配 捕获处理程序最终被找到,处理程序运行并执行 继续执行中catch处理程序后面的第一条语句 捕捉方法

奥兹古尔译:

static void A()
{
    B();
    // When you invoke B() from inside A();
    // Calling method: A
    // Caller method: A
    // Called method: B
}

static void B()
{
    C();
    // When you invoke C() from inside B();
    // Calling method: B
    // Caller method: B
    // Called method: C
}
如果出现这种情况,并且try块是C的一部分,则该方法 立即退出,执行返回到B

如果B使用try块,则运行时将尝试查找并执行 匹配此try块的catch处理程序

如果B不使用try块或没有匹配的catch 处理程序B立即退出,执行返回到A

重复该过程的位置


调用方法和调用方只是不同的词组,意思相同。没有区别。如果方法A调用B,B调用C,C调用D,那么你有一个链A->B->C->D。粗体文本表示如果D抛出异常,那么它的调用方就是调用方法;C将处理该异常。如果没有,则异常会出现在调用方法的C的调用方;B、 以此类推,直到捕捉到异常或应用程序崩溃。您是否有更具体的问题可以解除阻止?从问题的标题来看,你似乎认为相同的两件事是不同的。如果我说慢跑者和慢跑者,我的意思是一样的。你到底在问什么?您理解编程语言中方法调用的含义吗?首先,我注意到,您粘贴下来的描述性文本是一个非常简化的版本,它描述了在遇到异常时发生的情况,可能过于简化了。更简单、更准确的说法是:1运行时尝试标识catch块,可能执行catch过滤器来标识catch块;这些过滤器在任何finally块之前运行2如果找不到匹配的catch,程序行为是实现定义的,3如果可以找到匹配的catch,则控制传递到最近的封闭finally(如果有);然后我们必须考虑如果最后投掷会发生什么;那样的话,我们重新开始。如果finally在正常完成之前没有抛出,那么我们继续下一个finally(如果有)。4一旦不再有finally块,控制传递给确定为适当处理程序的catch。
static void A()
{
    B();
    // When you invoke B() from inside A();
    // Calling method: A
    // Caller method: A
    // Called method: B
}

static void B()
{
    C();
    // When you invoke C() from inside B();
    // Calling method: B
    // Caller method: B
    // Called method: C
}