Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connectionsDate: Fri, 6 Jun 2025 12:47:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: THROW codes and ambiguous conditions
Newsgroups: comp.lang.forth
References:
<659bb0b01bc8680179097e1a4d976109@www.novabbs.com>
Content-Language: en-US
From: Hans Bezemer
In-Reply-To:
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Message-ID:
Organization: KPN B.V.
Path: news.eternal-september.org!eternal-september.org!feeder3.eternal-september.org!news.swapon.de!weretis.net!feeder8.news.weretis.net!feeder2.feed.ams11.usenet.farm!feed.usenet.farm!feed.abavia.com!abe004.abavia.com!abp003.abavia.com!news.kpn.nl!not-for-mail
Lines: 47
Injection-Date: Fri, 06 Jun 2025 12:47:13 +0200
Injection-Info: news.kpn.nl; mail-complaints-to="abuse@kpn.com"
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