never throws app exception