当前位置:  开发笔记 > 编程语言 > 正文

C#如何捕获异常并检查它是否包含字符串?

如何解决《C#如何捕获异常并检查它是否包含字符串?》经验,为你挑选了3个好方法。

当用户权限足够时,我收到一个说"拒绝访问"的异常,如何捕获异常并检查"拒绝访问",以便我可以向用户显示更友好的"拒绝访问被拒绝"消息?

谢谢初学者:-)



1> Ed Marty..:

你真的不想检查消息的字符串,你想检查消息的类型,这可以通过只捕获你正在检查的异常类型来轻松完成.以下示例将捕获两种不同类型的异常,并根据发生的错误执行不同的操作.(注意:组成例外的名称)

try {
    ...
} catch (SomeKindOfException ex) {
    MessageBox.Show(ex.Message);
} catch (AccessDeniedException ex) {
    //Do something else
}



2> Jeff Atwood..:

我认为这里最安全的事情(而且令人惊讶的是没有一个答案表明这一点)是

尽可能捕获特定的异常类型.真的试图避免捕获所有异常.

测试string.ToLowerInvariant()包含目标字符串的异常消息.

重新 -throw如果它不是你所期望的!

像这样:

try
{
    int result = DoStuff(param);
}
catch (System.IO.IOException ioex)
{
    if (ioex.Message.ToLowerInvariant().Contains("find me"))
    {
        .. do whatever ..
    }
    else
    {
        // no idea what just happened; we gotta crash
        throw;
    }
}



3> Ed S...:

如果您正在使用try catch块...

try
{
    //error occurs
}
catch (Exception ex)
{
    MessageBox.show(ex.Message);
}

显然,这是非常糟糕的错误处理,但它显示Exception对象包含错误字符串.您可以通过捕获不同的异常类型来缩小对不同异常的处理范围.

Try
{
    //error occurs
}
catch (AccessDeniedException ex)
{
    MessageBox.show(ex.Message);
}
catch (FieldAccessException)
{

}
// etc...

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有