How to resolve the algorithm Exceptions/Catch an exception thrown in a nested call step by step in the AutoHotkey programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Exceptions/Catch an exception thrown in a nested call step by step in the AutoHotkey programming language

Table of Contents

Problem Statement

Show how to create a user-defined exception   and   show how to catch an exception raised from several nested calls away.

Show/describe what happens when the program is run.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Exceptions/Catch an exception thrown in a nested call step by step in the AutoHotkey programming language

Source code in the autohotkey programming language

global U0 := Exception("First Exception")
global U1 := Exception("Second Exception")

foo()

foo(){
	try
		bar()
	catch e
		MsgBox % "An exception was raised: " e.Message
	bar()
}

bar(){
	baz()
}

baz(){
	static calls := 0
	if ( ++calls = 1 )
		throw U0
	else if ( calls = 2 )
		throw U1
}


foo()
Return

foo()
{
  bar(0)
  If InStr(ErrorLevel, "U0")
    MsgBox caught error: U0
  bar(1)
  If InStr(ErrorLevel, "U0")
    MsgBox caught error: U0
}

bar(i)
{
  StringReplace, ErrorLevel, ErrorLevel, baz_error, , All   ; clear baz_error(s)
  If !baz(i)
    ErrorLevel .= "baz_error"  ; add baz_error to errorstack
}

baz(i)
{
  StringReplace, ErrorLevel, ErrorLevel, U1, , All   ; clear U1 errors
  StringReplace, ErrorLevel, ErrorLevel, U0, , All   ; clear U0 errors
  If i
    ErrorLevel .= "U1"  ; add U1 errors to errorstack
  Else
    ErrorLevel .= "U0"
  Return 1
}


  

You may also check:How to resolve the algorithm Compare length of two strings step by step in the Racket programming language
You may also check:How to resolve the algorithm N'th step by step in the Pascal programming language
You may also check:How to resolve the algorithm Loops/Do-while step by step in the Pop11 programming language
You may also check:How to resolve the algorithm Random numbers step by step in the Forth programming language
You may also check:How to resolve the algorithm Write to Windows event log step by step in the F# programming language