如果加入一个,驱动器框和一个目录列表框,一行代码也不写,运行。 那么在调试的时候,选取驱动器框下拉列表,改成A盘,如果软驱里面没有放盘,WINDOWS2000会先捕捉到IO错误,然后选继续,这时DELPHI编译器捕捉到错误,IO错误。请问,像这种一行代码也没有的程序,如何捕捉其异常?在什么位置写异常?

解决方案 »

  1.   

    默认情况下,异常被Application所捕获
    在Application.Run里有这么一句
        repeat
            try
              HandleMessage;
            except
              HandleException(Self);
            end;
          until Terminated;
    而HandleException如下procedure TApplication.HandleException(Sender: TObject);
    begin
      if GetCapture <> 0 then SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
      if ExceptObject is Exception then
      begin
        if not (ExceptObject is EAbort) then
          if Assigned(FOnException) then
            FOnException(Sender, Exception(ExceptObject))
          else
            ShowException(Exception(ExceptObject));
      end else
        SysUtils.ShowException(ExceptObject, ExceptAddr);
    end;而如果没有分配Application的OnException事件的话
    就调用ShowException,ShowException调用MessageBox来显示一个错误对话框
      

  2.   

    application.run的代码在哪里能够看到?
      

  3.   

    project1.dpr ?  我看了没有啊 , 是不是要找VCL的源代码?  他妈的DELPHI应该做个驱动器框ERROR事件。
      

  4.   

    你在
    Project1.dpr,按住Ctrl,用鼠标点Application.Run的Run;