Newsgroups: comp.lang.beta Path: news.daimi.aau.dk!news.uni-c.dk!newsfeed.sunet.se!news01.sunet.se!sunic!mn6.swip.net!seunet!news2.swip.net!dos.canit.se!news.jos.net!newsfeed.tip.net.!newsfeed.tip.net!xinit!solace!paladin.american.edu!zombie.ncsc.mil!news.mathworks.com!newsfeed.internetmci.com!csn!news-1.csn.net!torn!watserv3.uwaterloo.ca!undergrad.math.uwaterloo.ca!wyrmok From: wyrmok@plg.uwaterloo.ca (Russell Mok) Subject: exception in BETA Sender: news@undergrad.math.uwaterloo.ca (news spool owner) Message-ID: Date: Fri, 12 Apr 1996 01:38:25 GMT Nntp-Posting-Host: plg.uwaterloo.ca Organization: University of Waterloo Keywords: exception Lines: 49 A few days ago, I read some articles about exception handling, not necessarily limited to BETA. What caught my attention was something related to resumption handling. Then I went to the library and got the BETA book from ACM. My goal is to understand enough about the exception handling in BETA and compare it with C++ or similar language. The static approach in BETA against the dynamic approach in C++/Ada is my major focus. Because I knew nothing about BETA before this week, I don't think I can give fair comments on BETA exception handling mechanism. I am not looking for comments about the language in BETA, but comments about the static approach of exception handling and the use of resumption. A few specific questions that I have: 1. Exception propagation (to the caller) is not easily supported in BETA and basically Knudsen's intention of developing the static exception handling was to have a handler independent of the call chain. Does anyone find the absence of exception propagation a good/bad feature? Why? 2. Obviously, BETA patten can mimic the dynamic approach, I believe it is possible with a feature like LEAVE. Is this correct? 3. How often do you use the mimicked dynamic approach? Do you think it should be a built-in feature? 4. Do you think the static approach alone is sufficient and easy enough to use? 5. This is a question about Knudsen's model. What I see is that the examples he used were a block declared within another -- nested blocks. Modern languages have modules for name space management and exceptions can be declared in separate modules. In addition, languages like Modula-3 separate interface and implementation and a client can selectively import from an interface. Therefore, an exception raised by a routine may not be visible by its caller. It seems to me that there is something missing here but I don't know how to describe it. You don't have to answer all my questions but your help will be greatly appreciated. Thanks a million. Russ -- Russell Mok Dept of Computer Science, University of Waterloo Waterloo, Ontario, Canada N2L 3G1 email: wyrmok@plg.uwaterloo.ca