try
    adoconnection.connectstring:='......';
    adoconnection.open(usrid,passwd);
    adoconnection.close;
    showmessage('连接成功');
exception
    on eoleexcept do
    begin
       adoconnection.close;
       adoconnection.free;
    end;
    on eaccessexcept do
    begin
      adoconnection.close;
      adoconnection.free;
    end;
end;
 
但运行时如果连接串错误或密码错误就会先弹出系统的eoleexcept和eaccessexcept异常对话框,而不执行我定义的异常处理过程,如果继续点击运行,才弹出我写的提示。请问如何屏蔽前面的异常提示,直接由我的异常处理接管?

解决方案 »

  1.   

    try
    {
        adoconnection.connectstring:='......';
        adoconnection.open(usrid,passwd);
        adoconnection.close;
        showmessage('连接成功');
    }
    catch(这里定义错误所属的类型 比如:Exception err)
    {
      MessageBox.Show(err.message);
    }
      

  2.   

    楼上,我问的是DEPHI中如何解决,不是VC或JAVA!!!
      

  3.   

    try    adoconnection.connectstring:='......';
        adoconnection.open(usrid,passwd);
        adoconnection.close;
        showmessage('连接成功');exception(这里定义错误所属的类型 比如:Exception err)  MessageBox.Show(err.message);end;
      

  4.   

    楼上请看清问题,我说的是为什么会先弹出DEPHI的异常提示,不直接到我的异常处理。如何写异常我还是知道的,不要答地不着边际!
      

  5.   

    你是在D里直接运行时才出这样的吧,你直接执行Exe文件就不会先弹出DEPHI的异常提示,而是直接执行你的异常处理了
      

  6.   

    try
        adoconnection.close;//这样试试
        adoconnection.connectstring:='......';
        adoconnection.open(usrid,passwd);
        adoconnection.close;
        showmessage('连接成功');
    exception
        on eoleexcept do
        begin
           adoconnection.close;
           adoconnection.free;
        end;
        on eaccessexcept do
        begin
          adoconnection.close;
          adoconnection.free;
        end;
    end;
      

  7.   

    你可以设置断点试试在open的前面一句设置,应该是open时报错吧!delphi里直接运行时,有错会先报出来的,然后才执行你的异常操作的
      

  8.   

    直接运行EXE试试看!如果还不行就去截Application.OnException事件一定可以解决!
      

  9.   

    All  are right!If you execute a executable file ,the problem will be solved!
      

  10.   

    Tools -> Debug Options -> Language Exceptions do NOT check the "Stop on Delphi exceptions"