Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
233 views
in Technique[技术] by (71.8m points)

How to recognize specific exception in Delphi

Most of the time I'm relying on the ClassName and the Message of the exception to decide what to do in case of an error:

      AddDebugMessage('GetExcelValues: Exception '+e.ClassName+' with message '+e.Message+' while getting values from sheet '+TaskRecs[TaskNr].SheetName,Error)

But now I'm working with Excel OLE and Exception messages seem to have been translated (into Dutch in my case). So looking at the Exception message seems to be out of the question.

Is there a better way to find out what exception is being raised?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Many exception classes have more members to help describe the error. For Excel (or other OLE handling), you can get the error code like this:

try
    // Excel handling removed 
except
    on E: EOleException do begin
        Memo1.Lines.Add(E.Message);
        Memo1.Lines.Add('Error code 0x' + IntToHex(E.ErrorCode, 8));
        Exit;
    end;
end;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...