what is the purpose of exception handling in lib functions, anyway? the CALLER is supposed to handle that