Look at Node.js, where exceptions don't necessarily travel up written code, begetting the convention of passing an error object, similar to what the OP proposes.
I don't like it, I don't think anyone particularly likes it. It makes you miss exceptions.
I don't like it, I don't think anyone particularly likes it. It makes you miss exceptions.