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