![]() | |||||||||||||
Messages in this thread |
On Sat, Feb 23, 2002 at 08:22:11AM -0800, Larry McVoy wrote: > On Sat, Feb 23, 2002 at 06:05:48PM +0200, Dan Aloni wrote: > > But, it CAN be used in *local* driver call branches. Writing a new > > driver? have a lot of local nested calls? Hate goto's? You can use > > exceptions. > > Is this really anything other than syntactic sugar? Maybe it's different > in drivers, but I find myself doing the following in user space all the time Exceptions provide implicit handling. You should see tham as an alternate return path. And because of that implicitness, it is not syntactic sugar. However, one thing which your example does emphasize, it the risk of resource leaks. Bjarne Stroustrup, who is no mean architect himself, spends a lot of pages discussing those leaks. Basically, an exception may fall through several functions before being caught. Any resources acquired by those intermediate functions will not be released unless this is done automatically during stack unwinding, ie, destroctors or alloca(3). So while having an alternate return path is cool, it really needs destructors in order to be useful in a real world. This url documents the problem, which is solved by adopting the 'Resource Acquisition is Initialization' paradigm: http://sourceforge.net/docman/display_doc.php?docid=8673&group_id=9028 Regards, bert -- http://www.tk the dot in .tk Netherlabs BV / Rent-a-Nerd.nl - Nerd Available - Linux Advanced Routing & Traffic Control: http://ds9a.nl/lartc - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-03-22 12:20 [from the cache] ©2003-2008 | |||||||||||||