或者你根据这个conn.open();函数的返回值判断一下,不成功就抛出异常或者直接弹出错误对话框返回!

解决方案 »

  1.   

    catch(System.ExecutionEngineException ex)
    {
    MessageBox.Show(ex.Message,"系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    这样能catch嘛?
      

  2.   

    to kinglht(爱新觉罗至尊宝) :
    try
    {
    conn.Open();
    if(conn.State==System.Data.ConnectionState.Open)
    {
    MessageBox.Show("open","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    else
    {
    MessageBox.Show("已经close","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    }
    我试过了,不跳出"已经close",在这之前就跳出异常了。
    to heatol() :
    你的意思我没完全明白?
    一是:你的意思是:我用的是System.ExecutionEngineException ex,可我用的是System.Exception ex,你没看清。
    二是:你的意思是:让我用System.ExecutionEngineException ex,我也用了,效果一样。同时感谢两位的帮忙。
      

  3.   

    你的conn是什么东西?能否修改open()代码?
      

  4.   

    try
    {
    conn.open();
    }
    catch{
    }
    就这样试试。
      

  5.   

    我就是这样试的,异常不走catch
      

  6.   

    我认为异常一般是指系统已经出现你无法控制的问题或者是出现的问题你不知怎们解决
    ,不能运行下去,
    例如
    1、connection.open ==>这里抛出了exception ,可能是网络问题,也可能是数据库问题,也可能是,连接字符串问题等等
    2、出现了你能确定原因的错误,但不知如何处理,例如你给别人编组件,出现了问题,是写日志还是给用户提示,所以抛出异常你的第一个case ,2.0 可以用trypase
    1.1 最好用regex 判断一下,直接用异常的方式似乎有些不承担责任的意思
      

  7.   

    如果仅仅是弹出一个异常对话框,但是程序并没有退出的话:可能是excel自己的进行了异常处理,所以你不能catch;对于这种情况就很难解决,一般是在执行之前进行判断
    如果程序退出的话应该是你的代码有问题
      

  8.   

    我知道错误出在哪里,就是因为我open的excel文件是坏的,所以在open时出现了异常,但是我就是想用try-catch将异常扑捉,以后在open坏的excel文件时给一个提示。
      

  9.   

    to  kaishui_gu():
    我的程序没问题, 没有退出,是excel文件本身是坏的,但我想用异常处理机制将此异常扑捉,以后在open坏的excel文件时给一个提示。
    对了顺便问一下,强行关闭程序,用什么方法?
    我用的是
    this.Dispose();
    System.Windows.Forms.Application.Exit();
    System.Windows.Forms.Application.ExitThread();但程序没有停止,没有退出
      

  10.   

    捕捉所有异常 不要只捕捉system的异常
      

  11.   

    The exception that is thrown when there is an internal error in the execution engine of the common language runtime. 我觉得是.net的一个bug,你用的是什么版本呢?试试新版有没有fix这个bug。
    它的execution engine都出错了,我们也就别指望能捕捉这个exception了。
      

  12.   

    CLR异常是捕捉不到的。ExecutionEngineException就是CLR异常。记得共有3个CLR异常。摘自msdn:
    执行引擎错误是致命错误,决不应该发生。此类错误主要是在执行引擎被破坏或丢失数据时发生的。系统会随时引发此异常。在可能的情况下,系统将引发比 ExecutionEngineException 异常能提供更多信息的异常。
      

  13.   

    我上面不是说了嘛,这样应该是Excel自己处理了异常,你是没有办法处理这个异常的,
    要解决这个问题,就是在调用Open方法前先判断excel文件是否损坏怎么关闭程序我就不知道了
      

  14.   

    StackOverflowException
    OutOfMemoryException
    ExecutionEngineException以上几个异常都无法捕捉
      

  15.   

    不是excel自己处理的吧?是CLR自己处理的。
      

  16.   

    原来这样,我还以为OutOfMemoryException这些异常都会使程序关闭的。
    不好意思,误导人
      

  17.   

    如果抛出异常的和你这个catch不在同一个线程就捕获不到了
      

  18.   

    请检查一下这个设置:调试
      异常
        Common Language Runtime Exceptions 引发(不选择上的) 用户未处理的(选择上的)
      

  19.   

    我還碰到更其怪的呢,我在調試中碰到異常,它直接就中此整個程序,如果加了catch就不會中斷程序。