编码时如何选择错误信息返回方式

我想请教一下各位大牛,你们写代码的时候,一般如何返回错误信息?

我目前想到的有以下几种方式,
1、接口返回错误码,然后通过其他接口传入错误码查询错误信息;
2、接口直接返回错误信息;
3、接口抛异常返回错误信息。

我感觉上述方式都不好用,我想听听你们的看法。

错误代码+错误信息 你看第三方提供的开发文档不都这样么 json 或者xml