Jump to content
Sign in to follow this  
the123punch

Error Handling in AutoIt

Recommended Posts

the123punch

Hello everyone,

I am getting better and better at AutoIt but I am still at the newbie level lets say so I have to ask the following question:

I am trying to implement some sort of error handling in my autoit script. I have seen on this forum that some people do it in that way:

Declaring the error object:

Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")

Having the error handling function:

; Com Error Handler

Func MyErrFunc()

$HexNumber = Hex($oMyError.Number, 8)

$strMSG = "Error Number: " & $HexNumber & @CRLF

$strMsg &= "WinDescription: " & $oMyError.WinDescription & @CRLF

$strMsg &= "Script Line: " & $oMyError.ScriptLine & @CRLF

MsgBox(0, "ERROR", $strMSG)

SetError(1)

Endfunc

So if I am not mistaken, this should pop a message box with the error information if an error happens during my script.

The reason I need this is that I have some SQL statements in my code that will insert new rows into a db table and for some reason it is not inserting, so I am assuming some sort of error could be happening.

After adding the above code, when I compile, and I try to run, my AutoIt application does not run and I get the following error when I run the resulting .exe:

Line -1:

Error: Variable must be of type "Object".

What am I missing? What am I doing wrong? Can anyone help?

Thanks.

the123punch

Edited by the123punch

Share this post


Link to post
Share on other sites
Richard Robertson

Why not run the source au3 file and find out what line the error occurs at. Perhaps you are making a different kind of mistake.

Share this post


Link to post
Share on other sites
WSorich

Try this, it worked for me.

Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")

;----------------------------------------------------------------------------------------------------------

; Com Error Handler

;----------------------------------------------------------------------------------------------------------

Func MyErrFunc()

Local $HexNumber

Local $strMsg

$HexNumber = Hex($oMyError.Number, 8)

$strMsg = "Error Number: " & $HexNumber & @CRLF

$strMsg &= "WinDescription: " & $oMyError.WinDescription & @CRLF

$strMsg &= "Script Line: " & $oMyError.ScriptLine & @CRLF

MsgBox(0, "ERROR", $strMsg)

SetError(1)

Endfunc

Share this post


Link to post
Share on other sites
autoitnewbie123

Try this, it worked for me.

Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")

;----------------------------------------------------------------------------------------------------------

; Com Error Handler

;----------------------------------------------------------------------------------------------------------

Func MyErrFunc()

Local $HexNumber

Local $strMsg

$HexNumber = Hex($oMyError.Number, 8)

$strMsg = "Error Number: " & $HexNumber & @CRLF

$strMsg &= "WinDescription: " & $oMyError.WinDescription & @CRLF

$strMsg &= "Script Line: " & $oMyError.ScriptLine & @CRLF

MsgBox(0, "ERROR", $strMsg)

SetError(1)

Endfunc

newbie here. Why do you need to setError to 1?

Share this post


Link to post
Share on other sites
CooperWu

Can't catch this error:

---------------------------

AutoIt Error

---------------------------

Line 17 (File "D:__MyLocalWorkAutoIT3_ScriptsDetectProcess.au3"):

$objProcess.GetOwner($user)

$objProcess.GetOwner($user)^ ERROR

Error: The requested action with this object has failed.

---------------------------

OK

---------------------------

Try this, it worked for me.

Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")

;----------------------------------------------------------------------------------------------------------

; Com Error Handler

;----------------------------------------------------------------------------------------------------------

Func MyErrFunc()

Local $HexNumber

Local $strMsg

$HexNumber = Hex($oMyError.Number, 8)

$strMsg = "Error Number: " & $HexNumber & @CRLF

$strMsg &= "WinDescription: " & $oMyError.WinDescription & @CRLF

$strMsg &= "Script Line: " & $oMyError.ScriptLine & @CRLF

MsgBox(0, "ERROR", $strMsg)

SetError(1)

Endfunc

Share this post


Link to post
Share on other sites
water

Make sure that the line

Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
is at the top of your script.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
water

Another change is needed:

Func MyErrFunc()
should be
Func MyErrFunc($oMyError)

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
erm3nda

Does this capture an error like: msbox(blah) ?? (bad syntax)

I need the simplest way to detect any error and retry the func again or retry whole app if needed.

Regards.


~ SELF SIGNED ~

How much warning points do i need to get my free spicy hammon?

Share this post


Link to post
Share on other sites
guinness

Is this your thing? Complaining that something doesn't work across the Forum without actually showing us what isn't working.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
erm3nda

guinness

 

Yes it is. Im reading this post to know how to catch some errors. Just searching for something like try/catch.

I cannot tell you what is failing because i don't know, and a lot of sensitive info is involved, so i cannot put here the full source.

When i can made a example script reproducing the error you will know.

I Apologize.

Can you point me to the correct way (documentation) to handle with errors? Regards.

 


~ SELF SIGNED ~

How much warning points do i need to get my free spicy hammon?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×