----- Original Message ----- 
From: "Markus Schneider" <[EMAIL PROTECTED]>
To: <libwin32@perl.org>
Sent: Tuesday, October 03, 2006 9:36 PM
Subject: Catching Exception from OLE Object


> Hi,
>
> I am using Win32OLE to test an application.
>
> For some tests the application throws a "divide by zero" exception,
> due to bugs in the SW.
>
> However, I cannot put this in my test report, since
> Win32::OLE->LastError() does not return the exception.
> In fact, it returns "0".
>
> Anybody can give me a hint how to catch the exception and make
> a nice trace in my report?
>

>From 'perldoc Win32::OLE':

------------------------
    Win32::OLE->LastError()
            The LastError() class method returns the last recorded OLE
            error. This is a dual value like the $! variable: in a numeric
            context it returns the error number and in a string context it
            returns the error message.
-----------------------

I guess the solution is therefore to force the return in "string context".

I have the feeling I should know how to do that ... but it eludes me for the
moment, at least.

I know a way to force $! into numeric context:

F:\>perl -e "open(RD, \"not_exist.txt\") or die $!*1"
2 at -e line 1.

Whereas, to get $! in string context it's just:

F:\>perl -e "open(RD, \"not_exist.txt\") or die $!"
No such file or directory at -e line 1.

Hopefully someone else can provide a *useful* answer :-)

Cheers,
Rob

Reply via email to