http://developer.android.com/guide/components/aidl.html


  您抛出的异常不会发送回调用方。

最佳答案

因为它使用linux / unix RPC调用(这就是为什么您可以使用AIDL访问其他进程的原因),而RPC调用却没有例外的想法-它们是在70年代为C编写的。制作它们会很复杂。异常情况如何工作令人难以置信。它基本上是longjmp调用。围绕过程开关执行此操作是可行的,但是它需要弄乱每个AIDL函数的返回类型,以基本上返回一个无类型的参数,并带有一个标明实际类型的标志,并通过代码对其进行解析并重新放入客户端。而且它不适用于一般的Exception,它仅适用于AIDL中定义的Exception类,这会抛出整个内置的Exception层次结构。 NDK库将无法使用AIDL,因为您几乎必须通过其反序列化库才能使其工作。鉴于AIDL极为稀少,并且使用它的任何人都可能知道如何在需要时返回错误值,因此,太多的工作就会得到很少的回报。

关于android - 为什么AIDL设计为无法将异常发送回调用方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24627989/

10-11 06:53