From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.6 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!Hx95GBhnJb0Xc8StPhH8AA.user.46.165.242.91.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Code flow control Date: Sat, 16 Oct 2021 09:50:00 +0200 Organization: Aioe.org NNTP Server Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: gioia.aioe.org; logging-data="34897"; posting-host="Hx95GBhnJb0Xc8StPhH8AA.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:63019 List-Id: On 2021-10-15 22:02, G.B. wrote: > On 15.10.21 20:03, Dmitry A. Kazakov wrote: >> On 2021-10-15 19:48, J-P. Rosen wrote: >> >>> Some people reserve exceptions for signalling errors. I regard them >>> as a way to handle "exceptional" situations, i.e. when the normal >>> flow of control cannot continue. For example, in a deep recursive >>> search, they are handy to stop the recursion and go back to top level >>> when you have found what you were looking for. Some would disagree >>> with that. >> >> I strongly believe that this is the only consistent way to treat >> exceptions. > > Once found, pass the result to the party that needs it. > Then, finish the computational task that found the result. > Is there anything besides exceptions to do that, and orderly? Exceptions is having two results: data read or file end, commit or rollback, item parsed or syntax error, next item or completed etc. Consequently there are two paths of execution, one per result. The more frequent/regular/complex path runs as the normal flow another does as exception propagation. In a data flow architecture you can have as many paths as you wanted, e.g. in a state machine. That does not work well as programming paradigm. Two paths is just how much the programmer can handle. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de