我正在尝试将 App Engine 与 Google Endpoints 结合使用,但我看到了一个奇怪的行为。如果我通过以下方式抛出异常:
throw new Exception("MyException");
然后,如果我在负责与 Endpoint 连接的 AsyncTask
中的 android 端捕获它,我根本无法从中获取消息。如果我调用 e.getMessage()
我得到类似的东西:
503 Service Unavailable
[ code: "503",
...
message: "MyException"
]
有点奇怪。有人遇到过这种行为吗?如何在 App Engine 上正确抛出异常?
最佳答案
您所看到的是正常且符合预期的。
App Engine 仅向您的 Android 客户端提供 HTTP 请求。不会通过 HTTP 请求“抛出”异常,您只会得到 HTTP 响应。您必须在 Google App Engine 端捕获异常,并将其转换为适当的 HTTP 错误响应(如果您没有捕获它,默认处理程序会如您所见提供 503 响应)。
在 Android 端,您必须检查错误结果。
关于java - App Engine 异常,如何在 Android 中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12785943/