【发布时间】:2020-05-15 18:07:18
【问题描述】:
我从android抛出了以下异常(或者它可以从ios抛出,没关系),我无法捕获它以避免应用程序崩溃。有解决办法吗?
> [ +276 ms] E/AndroidRuntime( 9658): FATAL EXCEPTION: Thread-2 [
> ] E/AndroidRuntime( 9658): Process: com.example.myonpu, PID: 9658 [
> ] E/AndroidRuntime( 9658):
> com.microsoft.identity.client.exception.MsalClientException:
> Connection is not available to refresh token [ ]
> E/AndroidRuntime( 9658): at
> com.microsoft.identity.client.internal.controllers.MsalExceptionAdapter.msalExceptionFromBaseException(MsalExceptionAdapter.java:49)
> [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.client.PublicClientApplication$9.onError(PublicClientApplication.java:1621)
> [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.common.internal.controllers.ApiDispatcher$4$1.run(ApiDispatcher.java:424)
> [ ] E/AndroidRuntime( 9658): at
> android.os.Handler.handleCallback(Handler.java:751) [ ]
> E/AndroidRuntime( 9658): at
> android.os.Handler.dispatchMessage(Handler.java:95) [ ]
> E/AndroidRuntime( 9658): at android.os.Looper.loop(Looper.java:154) [
> ] E/AndroidRuntime( 9658): at
> android.app.ActivityThread.main(ActivityThread.java:6682) [ ]
> E/AndroidRuntime( 9658): at java.lang.reflect.Method.invoke(Native
> Method) [ ] E/AndroidRuntime( 9658): at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
> [ ] E/AndroidRuntime( 9658): at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) [
> ] E/AndroidRuntime( 9658): Caused by:
> com.microsoft.identity.common.exception.ClientException: Connection is
> not available to refresh token [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.common.adal.internal.net.HttpWebRequest.throwIfNetworkNotAvailable(HttpWebRequest.java:201)
> [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.common.internal.controllers.BaseController.performSilentTokenRequest(BaseController.java:328)
> [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.common.internal.controllers.BaseController.renewAccessToken(BaseController.java:204)
> [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.client.internal.controllers.LocalMSALController.acquireTokenSilent(LocalMSALController.java:252)
> [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.common.internal.controllers.TokenCommand.execute(TokenCommand.java:89)
> [ ] E/AndroidRuntime( 9658): at
> com.microsoft.identity.common.internal.controllers.ApiDispatcher$4.run(ApiDispatcher.java:401)
> [ ] E/AndroidRuntime( 9658): at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
> [ ] E/AndroidRuntime( 9658): at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
> [ ] E/AndroidRuntime( 9658): at
> java.lang.Thread.run(Thread.java:762)
我不需要捕捉这个异常,而是捕捉这样的“致命异常”。我为 Future 尝试了 try/catch 和 catchError,但没有任何办法。
也试过 FlutterError.onError 这种方式:
mymethod() async{
await methodWhichCanThrowException();
FlutterError.onError = (details) {
FlutterError.dumpErrorToConsole(details);
};
...
}
如果它可以帮助这里是我使用的 msal_flutter 包 https://github.com/moodio/msal-flutter。
【问题讨论】: