10

作为编程新手,我刚刚发现您可以专门捕获某些类型的错误并将代码仅与该类型的错误联系起来。

我一直在研究这个主题,但我不太了解语法,例如

catch (InvalidCastException e) 
 {
 }

我知道这InvalidCastException是正在处理的错误类型,但是我不确定是什么e

有人可以解释一下吗?

4

10 回答 10

19

假设没有e. 您将如何获得异常消息?

名称e(或任何其他名称)可用于获取异常对象的句柄,以便从中提取信息。

不给出任何名称是合法的语法:

catch (InvalidCastException) //legal C#

这行得通,但是除了它的类型之外,您对错误一无所知。

于 2012-12-28T17:33:19.157 回答
16

e是保存特定于异常的数据的对象。如果您查看不同类型的异常,您会发现它们都有不同类型的数据。许多人不这样做,但许多人这样做,当他们这样做时,它们可以帮助您准确识别发生的事情,而不是仅仅得到一个通用错误。

例如,定义了一个在普通对象中不存在的NotFiniteNumberException名为的附加属性......然后这提供了您可能需要弄清楚到底发生了什么的附加数据。OffendingNumberException

于 2012-12-28T17:32:05.247 回答
6

"e"就是您决定调用异常的任何内容。就像你会做的那样

string name = "...";

或者

int total = 8;

where stringand intin this example是数据类型,(在您的情况下,数据类型是InvalidCastException),而“ name”和“ total”是变量名称,在您的情况下只是“ e”。

于 2012-12-28T17:32:23.330 回答
5

'e'只是变量名称,您可以调用它,'ex'或者'exception'如果您发现它更易于阅读。但这'e'只是一个约定,就像for i = 0...构造中的“i”

于 2012-12-28T17:32:15.670 回答
4

eInvalidCastException是放置实例的变量。然后,您可以查看该对象的属性,以帮助您准确了解导致try块中代码抛出错误的原因。

于 2012-12-28T17:33:50.487 回答
4

“InvalidCastException”是类型,e是这个类型的对象。使用该对象,您可以在其上调用成员函数。例如

catch (InvalidCastException e) {
    ...
    e.printErrorMessage();
    ... 
}
于 2012-12-28T17:35:00.560 回答
3

e是对存储捕获的异常详细信息的异常对象的引用。详细信息可能包括异常MessageInnerException对象等。

于 2012-12-28T17:32:45.240 回答
2

e是一个变量名。它可以是您想要命名的任何名称,例如exception.

于 2012-12-28T17:32:01.710 回答
2

e是保存异常的变量,所以现在你可以做类似的e.message事情

于 2012-12-28T17:32:46.813 回答
2

e 是 InvalidCastException 类型的实例。例如,在 catch 块中,您可以说 Debug.Write(e.ToString())。

于 2012-12-28T17:34:17.083 回答