我正在尝试捕获用户定义的权限异常 - 即用户执行其系统访问级别不允许的内容,抛出权限异常。我的问题是,异常被捕获,然后作为一个基因System.Exception
重新抛出。
有没有办法可以推导出原始的异常类型,而不需要求助于if ex.ToString.Contains("Permission denied") Then ...
等字符串比较?
答案 0 :(得分:0)
您可以使用基本Exception类的InnerException属性,并循环到null
try
{
}
catch (Exception e)
{
while (e.InnerException != null)
e = e.InnerException;
Console.WriteLine(e.Message);
}
答案 1 :(得分:0)
这样的事情:
Try
Catch e as Exception
While e IsNot Nothing AndAlso Not TypeOf(e) is PermissionException
e = e.InnerException;
End While
' Rethrow if we can't handle it
If e Is Nothing Then Throw
' do whatever needs to be done when PermissionException is thrown
End Try