http://www.boost.org/more/error_handling.html