当用户权限足够时,我收到一个说"拒绝访问"的异常,如何捕获异常并检查"拒绝访问",以便我可以向用户显示更友好的"拒绝访问被拒绝"消息?
谢谢初学者:-)
你真的不想检查消息的字符串,你想检查消息的类型,这可以通过只捕获你正在检查的异常类型来轻松完成.以下示例将捕获两种不同类型的异常,并根据发生的错误执行不同的操作.(注意:组成例外的名称)
try { ... } catch (SomeKindOfException ex) { MessageBox.Show(ex.Message); } catch (AccessDeniedException ex) { //Do something else }
我认为这里最安全的事情(而且令人惊讶的是没有一个答案表明这一点)是
尽可能捕获特定的异常类型.真的试图避免捕获所有异常.
测试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; } }
如果您正在使用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...