Ind*_*ore 4 c# exception-handling exception
我有一段代码
//Code 1 Code 2 Code 3
try try try
{ { {
//Exp occur //Exp occur //Exp occur
} } }
catch (Exception e) catch (Exception) catch
{ { {
//Handle exp //Handle exp //Handle exp
} } }
Run Code Online (Sandbox Code Playgroud)
所有三个代码
P.S.之间有什么区别.我是新手,C#并且至于Java或者Objective-C担心这个语法会引发错误
代码1
它在一个对象中捕获Exception,e以后可以用于异常处理.例如,您可以使用e.Message或记录Message属性或查看堆栈跟踪e.StackTrace
代码2
您正在捕获基类型的所有异常,Exception但由于您没有任何与之相关的对象,因此您只能抛出该异常以使其冒泡或者您可以忽略该异常.如果在那段代码中你有:
catch(InvalidCastException)
Run Code Online (Sandbox Code Playgroud)
然后所有InvalidCastException将在没有异常对象的块中处理
代码3
您正在捕获所有类型的异常,无论其类型如何,这与您的基类类代码2类似 Exception
尽管可以在不使用参数的情况下使用catch子句来捕获任何类型的异常,但不建议使用此用法.通常,您应该只捕获那些您知道如何从中恢复的异常.
如果在捕获基本异常之前捕获特定异常,它总是更好.就像是.
try
{
}
catch(InvalidCastException ex)
{
}
catch(Exception ex)
{
}
Run Code Online (Sandbox Code Playgroud)
可以在同一个try-catch语句中使用多个特定的catch子句.在这种情况下,catch子句的顺序很重要,因为catch子句是按顺序检查的.在不太具体的例外之前捕获更具体的例外.如果您订购了catch块,编译器会产生错误,以便永远无法访问以后的块.
| 归档时间: |
|
| 查看次数: |
1216 次 |
| 最近记录: |