`  I'm with 83.216.62.233. This requires some change to the article. When reading a file, it's probably ok to do it like this:  { File f(``foo.txt``); cout << f.readLine(); } ..since I can't think of a case when the destructor could throw after a successful read. Many resources can be released without the possibility of failure, so this is how simple RAII is usually. But the example writes to a file, so it should be written like this:  { File f(``out.txt``); f.write(``hello``); f.close(); } In this case, Python and Ruby blocks are in fact simpler because they handle release failure correctly and do not require an explicit .close() call.  So, what should be done to the article? This issue needs to be covered better, that much is certain. It may not apply to D (maybe D's destructors can throw without causing abort when unwinding  I don't know). Should the example use a scoped_ptr, or read from a file, to demonstrate the simple RAII case that requires no explicit close()? I'll probably change the article at some point..  `