我使用Unity Parse SDK进行登录系统。如果登录信息正确,一切正常,如果不正确,那么它会导致异常,导致与我的Prime31 Etcetera Alert弹出窗口冲突。该异常似乎不会导致任何其他问题,否则应用运行正常。
例外:
System.AggregateException: Exception of type 'System.AggregateException' was thrown.
-----------------
Parse.ParseException: 404: not found
at Parse.ParseClient+<>c__DisplayClass8.<RequestAsync>b__7 (System.Threading.Tasks.Task`1 t) [0x00000] in <filename unknown>:0
at Parse.Internal.InternalExtensions+<>c__DisplayClass1`2[System.Tuple`2[System.Net.HttpStatusCode,System.String],System.Tuple`2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary`2[System.String,System.Object]]].<OnSuccess>b__0 (System.Threading.Tasks.Task t) [0x00000] in <filename unknown>:0
at Parse.Internal.InternalExtensions+<>c__DisplayClass7`1[System.Tuple`2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary`2[System.String,System.Object]]].<OnSuccess>b__6 (System.Threading.Tasks.Task t) [0x00000] in <filename unknown>:0
at System.Threading.Tasks.Task+<>c__DisplayClass3`1+<>c__DisplayClass5[System.Threading.Tasks.Task`1[System.Tuple`2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary`2[System.String,System.Object]]]].<ContinueWith>b__2 () [0x00000] in <filename unknown>:0
我尝试使用
捕获异常catch( System.AggregateException e )
和
catch( System.Exception e )
但似乎都没有抓住它。
我有一个临时的工作,通过将其激活延迟一帧来使用Etcetera。然而,这不是一个完美的解决方案,一帧偏移可能仍然失败。
如何正确捕获此异常或以其他方式处理/避免它?
谢谢
答案 0 :(得分:0)
不要试图捕获异常,而是检查任务是否出现故障:
Task t = ParseUser.LogInAsync(username, password);
while (!t.IsCompleted)
yield return null;
if (t.IsCanceled || t.IsFaulted)
{
// the exception can be found in t.Exception
}
else
{
// login successful
}
至于获取有关当前404例外的更多信息,遗憾的是你不幸。 Parse在Unity中不再提供任何信息,显然是由于Unity的HTTP堆栈有限。更多信息:https://www.parse.com/questions/unity-sdk-handling-errors