I've been reading through Exception Safe Programming page and I had a question: why not: scope(exit) unlock(m); lock(m); iso the inverse? lock() might crash but might still have locked m Or is this stpd reasoning? unlocking m when it is not locked should not ba a problem or the scope(exit) could check whether or not m is locked?