没遇到过你这种情况,猜想是try外部出现了异常,加断点调试一下吧!

解决方案 »

  1.   

    看看Initialize是不是有返回值什么的,是不是通过返回值判断的初始化状态,也就是初始化失败,并不会抛出异常,只是没找到设备
      

  2.   

    你的异常是在   axXnsSdkDevice.Initialize(); //设备初始化语句 这个里面的··或许这个里面已经对这种异常做了处理的··所以你外部使用的时候不会出异常···
      

  3.   

    +1axXnsSdkDevice.Initialize(); 这个方法内部如果直接处理了异常的话,你外部就捕捉不到了!
      

  4.   

    默认情况下,.NET try catch 不能捕捉WIN32访问出现的异常,
    你需要在函数声明上加上一个标记,如:
     [System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
            private void NativeExceptionCatch()
            {
                try
                {
                    //调用方法
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
    这个方法,只适用于 .net 4.0及以版本。
      

  5.   

    +1axXnsSdkDevice.Initialize(); 这个方法内部如果直接处理了异常的话,你外部就捕捉不到了!
    丢个板砖,标准的概念不清,异常要是在里面被处理了,程序就不可能崩溃了。try-catch结构只能捕获托管代码产生的异常,非托管代码它无法捕获,你这里执行的是非托管代码方法,自然是捕获不到异常的了。异常需要对方自己处理好,不处理好的非托管代码本身就有问题。
      

  6.   

    axXnsSdkDevice.Initialize(); 没有抛出异常,自己处理掉了,你当然截获不到。
      

  7.   

    try catch 处理托管代码,CLR来处理这个,非托管代码是另一个进程处理,CLR当碰到非托管代码,会激发相应的进程处理。
      

  8.   

    +1axXnsSdkDevice.Initialize(); 这个方法内部如果直接处理了异常的话,你外部就捕捉不到了!
    丢个板砖,标准的概念不清,异常要是在里面被处理了,程序就不可能崩溃了。try-catch结构只能捕获托管代码产生的异常,非托管代码它无法捕获,你这里执行的是非托管代码方法,自然是捕获不到异常的了。异常需要对方自己处理好,不处理好的非托管代码本身就有问题。
    这不是在说废话么···
      

  9.   


    简单来说就是你的方法执行失败,和你的方法抛出异常是两码事,你的摄像机不在线,初始化肯定失败,是方法执行失败,不是这个方法产生了异常axXnsSdkDevice.Initialize()。通常是通过返回值来进行处理,而不是try起来
      

  10.   

    +1axXnsSdkDevice.Initialize(); 这个方法内部如果直接处理了异常的话,你外部就捕捉不到了!
    丢个板砖,标准的概念不清,异常要是在里面被处理了,程序就不可能崩溃了。try-catch结构只能捕获托管代码产生的异常,非托管代码它无法捕获,你这里执行的是非托管代码方法,自然是捕获不到异常的了。异常需要对方自己处理好,不处理好的非托管代码本身就有问题。
    +1,建议使用Marshal.GetLastWin32Error()