具体使用Try/Catch

Ral*_*alt 10 c# exception-handling try-catch

作为编程新手我刚刚发现你可以专门捕获某些类型的错误并将代码绑定到那种类型的错误.

我一直在研究这个主题,我不太明白语法,例如

catch (InvalidCastException e) 
 {
 }
Run Code Online (Sandbox Code Playgroud)

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

有人可以解释一下吗?

usr*_*usr 19

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

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

不提供任何名称是合法的语法:

catch (InvalidCastException) //legal C#
Run Code Online (Sandbox Code Playgroud)

这有效,但除了类型之外,您无法了解有关错误的任何其他信息.


Mic*_*ray 16

e对象保存特定于异常的数据.如果您查看不同类型的异常,您会发现它们都具有不同类型的数据.许多人没有,但很多人这样做,当他们这样做时,他们可以帮助您确切地确定发生了什么,而不仅仅是获得一般错误.

例如,NotFiniteNumberException定义一个名为" OffendingNumber普通Exception对象"中不存在的附加属性...然后,您可能需要提供其他数据,以确定究竟发生了什么.


Tho*_*and 6

"e"就是你决定称之为异常的任何东西.就像你会做的那样

string name = "...";
Run Code Online (Sandbox Code Playgroud)

要么

int total = 8;
Run Code Online (Sandbox Code Playgroud)

其中,stringint在这个例子中是数据类型,(在你的情况下,数据类型是InvalidCastException),而" name"和" total"是变量名,而你的情况仅仅是" e".


Sim*_*tin 5

'e'只是变量名称,您可以调用它,'ex'或者'exception'如果您发现更容易阅读.但这'e'只是一个惯例,就像for i = 0...构造中的"我"一样