Jump to content

Error Handling in AutoIt


Recommended Posts

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
Link to comment
Share on other sites

  • 5 months later...

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

Link to comment
Share on other sites

  • 3 months later...

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?

Link to comment
Share on other sites

  • 2 years later...

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

Link to comment
Share on other sites

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 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Another change is needed:

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

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

  • 2 years later...

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 3 weeks later...

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?

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...