[enh] exception handling