今天接到了个需求,需要用到跨进程抛异常。
怎样将异常从服务端抛到客户端
也就是说在Service端抛出的异常需要可以在Client端接收。...印象中binder是可以传异常的,所以aidl直接走起:
// aidl文件
interface ITestExceptionAidl {
boolean testThrowException();...然后这里有个需要注意的点就是异常必须是写在Parcel的头部的,也就是说如果没有异常,我们先要将0写到头部,然后再将返回值继续往后面写入。...如果有异常,我们要先将异常编码写入头部,然后就不需要再写入返回值了。
这样,在客户端读取的时候读取的头部就能知道到底有没有异常,没有异常就继续读取返回值,有异常就将异常读取出来并且抛出。...但是我们看到AIDL生成的代码都是写入的无异常,那我们抛出的异常是怎么传过去的呢?还记得这个打印吗?