从InnerException中提取SqlException错误号

时间:2017-08-17 15:40:08

标签: c# try-catch

如何提取该错误代码而不必依赖于如下面的代码中所示的转换?在屏幕截图中,Number是对象InnerException的属性,但它无法访问。

try
{
    // db call
}
catch (Exception exc)
{
    // Works
    var q = exc.InnerException as SqlException;
    var ErrorCode = q.Number;
   // Not possible
    var err = exc.InnerException.Number;
}

为什么这不可能,还有其他选择吗?另外,在哪里可以找到InnerException Number属性的文档?

enter image description here

1 个答案:

答案 0 :(得分:1)

  

此外,在哪里可以找到InnerException Number属性的文档?

该属性是var latlng = new LatLng(34.9820, 138.5160); gMap.MoveCamera(CameraUpdateFactory.NewLatLng(latlng)); 类的成员。记录here

因为它是该类的成员,而不是基类SqlException类,所以如果没有某种形式的转换,就无法直接访问它。 (Exception被定义为Exception.InnerException,而不是Exception。)但是,如果有特定的内容,您不会对您的方式感到满意。重新构建它,有一些与您可能想要利用的转换和类型检查相关的不同语法。你对目前的做法不喜欢什么?