You try catch it directly in the function here ... but try catchs power lays far far FAR above that because you can try catch in the main loop and if one of the functions called within a function called within a function throws something your mainloop try will still catch the error, so you can do ALL error handling in 1 single spot!!
I still don't see the benefit.
How is this better than having a custom RuntimeError function?
In your example, wherever you have an error, you call Throw, and pass it a string, which causes a goto-like jump out of wherever you are into your catch loop.
But I can do the exact same thing with a function, and it doesn't require and extra typing.
1 million local error handling approaches that will end inconsistent
If all my errors call a custom "Throw" or "RuntimeError" function that displays the error and exits the program, that isn't inconsistent. And "1 million" implies I have to do more typing than your try catch approach, which is simply not true.
Show me one single case where Try Catch works better or simplifies things more than this RuntimeError function:
Function RuntimeError(Error$) EndGraphics Notify(Error$, True) End End Function
It doesn't matter if I call that from the main loop, or three functions down in a recursive loop. It will still exit the program and display the error which is totally consistent.