From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public From: Matthew Heaney Subject: Re: Software landmines (loops) Date: 1998/09/03 Message-ID: #1/1 X-Deja-AN: 387395896 Sender: matt@mheaney.ni.net References: <35f51e53.48044143@ NNTP-Posting-Date: Wed, 02 Sep 1998 23:29:04 PDT Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-03T00:00:00+00:00 List-Id: doylep@ecf.toronto.edu (Patrick Doyle) writes: > >1. They are indeterminate. When you throw an exception, you have no idea > >where control will wind up. It is not simply an exit from the current > >scope, or even from the current function. > > By this logic, polymorphism is indeterminate too. When you call a > polymorphic function, you have no idea where control will > wind up. This is a Good Thing. It's what makes polymorphism > powerful: the fact that you're giving someone else some control > over the situation makes your code flexible. > > The same holds for exceptions. This is not a correct analogy. The problem is this Seize (M); Release (M); The problem is that flow of control skips right past the Release when an exception occurs. This loss of control is definately NOT a good thing, because it will cause deadlock. My rebuttal to Robert's argument is that the seize and release calls should be called automatically, not manually by the programmer. Even if an exception occurs, Release gets called (automatically), and so no resource problems can occur.