As we currently discuss the Try/Catch, there is a very connected keyword in other languages that I would suggest for PureBasic. In C# it is Using, in python it is With. If we cannot have Try/Catch, we may still have a kind of centralized clean up inside of scopes.
It looks like this:
Code: Select all
Using *Buffer[ = AllocateMemory(...)]
; use buffer
EndUsing
Code: Select all
[*Buffer = AllocateMemory(...)]
Try
; use buffer
Finally
; Clean up the object
FreeMemory(*Buffer)
EndTry
Code: Select all
; Situation 1
Procedure Whatever()
Using *Buffer
...
If something
...
ProcedureReturn ...
EndIf
...
If something
...
ProcedureReturn ...
EndIf
...
EndUsing
EndProcedure
; Situation 2
For i = 0 To 20
Using *Buffer
...
If something
...
Break
EndIf
...
If something else
...
Continue
EndIf
...
EndUsing
Next