代码如下: 
-----------------------------
 try
    DM.ADOConnection1.Open;
  except
    begin
      ShowMessage('无法连接到数据库!');
      Application.Terminate;
    end;
  end;
-----------------------------
我故意将Sql Server 服务器关闭,然后执行程序,结果弹出错误信息:Sql Server不存在或拒绝访问!
而不是我希望出现的那个ShowMessage('无法连接到数据库!');也就是说:Try ....Except 没有捕捉到“无法连接”的错误。怎样才能捕捉得到呢?

解决方案 »

  1.   

      try 
        DM.ADOConnection1.connectionString:='//在此加上数据库连接的语句
        DM.ADOConnection1.Open; 
      except 
          ShowMessage('无法连接到数据库!'); 
          Application.Terminate; 
      end; 
       //去掉begin end
      

  2.   

    你在DELPHI环境下运行程序吧?你试保存一次程序,运行一次,再到保存程序的目录,直接执行那个EXE程序文件看看!
      

  3.   

    开发环境运行和生成exe运行的时候,捕捉错误的效果不一致滴……楼上民工正解
      

  4.   

    这个我也知道,而且是n年前就知道了。今天我在另一台电脑上试了,同样的代码,竟然可以捕捉到错误并弹出showmessage(),但在我的笔记本上死活不行! 真是咄咄怪事!!!难道我的笔记本电脑系统有什么问题? 
    请问1楼: //去掉begin end ?    为何??? 老兄Delphi基础没打扎实吧?
      

  5.   

    tryexcept 或 finallyend里面是不用begin end的
      

  6.   

    估计你的笔记本默认的机器调试程序就是delphi32.exe,在本机运行异常自动到调试环境去了?
    按说这个也不应该啊,try Except不在delphi开发调试环境下连接不通就应该跳到except去执行的
    而你的笔记本环境不认为这是异常,而是正常弹出sqlserver不存在的信息
    另外1楼的建议也没有错,加个begin end没什么用,不过加上去掉应该不是问题的所在
      

  7.   

    应该是你笔记本的DELPHI环境设置里DEBUG选择没打上勾而导致有错不报