kar*_*hik -1 .net c# exception-handling exception invalidoperationexception
以下是代码段:
class xxx
{
public xxx(){}
try
{
throw new Exception(InvalidoperationException);
}
catch(Exception x)
{
}
catch(InvalidoperationException x)
{
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉这里会引发哪个例外,背后的原因是什么.
哇,这里有很多问题.从哪儿开始?
该代码将无法编译.try-catch您定义的块不在任何方法之外,这是不允许的.您需要在方法内移动它.
永远不要抛出一个你打算在以后的方法中抓住自己的方法.这通常被称为使用"流量控制"的例外,这是完全不鼓励的.这样做会产生性能成本,并且当您拥有抛出并捕获它自己的异常的代码时,监视使用调试器时抛出的异常也会非常混乱.如有必要,使用布尔变量(称为标志)进行流量控制.
始终首先捕获派生最多的异常类.这意味着你应该InvalidOperationException先抓住,然后才能抓住Exception.您需要catch在您拥有的代码中颠倒块的顺序.
你几乎应该永远不会抓住System.Exception.您应该捕获的唯一例外是您明确理解并且能够处理的那些例外.当您获得的唯一信息是抛出一般异常时,您几乎无法知道出了什么问题或如何处理它.
本着同样的,你也应该永远不会抛出从您自己的代码此异常.选择一个从基System.Exception类继承的更具描述性的异常类,或者通过继承它来创建自己的异常类.
我看到其他答案显示了代码应该是什么样子的示例代码,是否要重写.我不会这样做,因为如果我重写你的代码是正确的,我最终会这样:
class Xxx
{
public Xxx()
{
}
}
Run Code Online (Sandbox Code Playgroud)
不是特别有帮助.
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |