Sujet : Re: THROW codes and ambiguous conditions
De : the.beez.speaks (at) *nospam* gmail.com (Hans Bezemer)
Groupes : comp.lang.forthDate : 06. Jun 2025, 11:47:12
Autres entêtes
Organisation : KPN B.V.
Message-ID : <nnd$138a0c48$6e9b207c@a05ad5d81879a3a6>
References : 1 2 3 4 5 6 7
User-Agent : Mozilla Thunderbird
On 04-06-2025 04:03, dxf wrote:
True. OTOH multilingual apps present a bigger problem than error msgs.
I recall my telecom days when the bulk of the equipment was Siemens and
technical manuals needed to be in English. The scale was such it would
have required a sizeable department just for that.
It may be my ignorance, but frankly, I don't see what the fuzz is all about. I build a centralized error handling routine in virtually all my programs, both C and Forth. And interfacing those with CATCH and THROW has never posed a problem. You can even define the behavior associated with a certain THROW value. Or set up handling per subsystem:
: Monitor ( xt -- n)
catch dup \ start processing
if throw-string s" Internal error: " >log >>message ;then drop
; \ handle and log errors
: ReadCMDB ( --)
['] Startup Monitor \ initialize the program
['] Process Monitor \ process the data
['] Shutdown Monitor \ shutdown the system
;
E.g. this one is straight from my BASIC interpreter:
0= if
begin drop ['] interpret catch dup until
then
ds.destroy .error
If an error is detected, it's value is passed to the .ERROR routine. And I assure you, it's quite easy to interface it with localization. So - what am I missing?
Now - whether I do return codes or exceptions depends on locality and fatality. If the error can be detected within the same module, I tend to like error codes. That's why I'd like to keep the main flow shallow (stages and subsystems).
Also - if there is no way to save grace, I tend to prefer exceptions. No need to wrestle through many layers carrying an error code.
Hans Bezemer