调用方法后,我在Android Studio中收到错误消息。我更想知道错误是否是我所认为的。 该错误在关闭并给出致命异常后首先告诉您意外的响应代码500。
我一直在尝试从致命异常中获取异常,但是没有运气。据我了解,我无法捕获到意外的响应代码500。
错误
D/NetworkSecurityConfig: No Network Security Config specified, using platform default
E/Volley: [1668] BasicNetwork.performRequest: Unexpected response code 500 for (website)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.geotask, PID: 14594
java.lang.IllegalStateException
at com.example.geotask.PSHandler$1.onErrorResponse(PSHandler.java:48)
at com.android.volley.Request.deliverError(Request.java:617)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:104)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Application terminated.
给出错误的代码
try {
psHandler.addNewUser(name, LoginActivity.this, new RetrievedCallback<Void>() {
@Override
public void execute(Void input) {
Intent intent;
intent = new Intent(LoginActivity.this, MainActivity.class);
Toast.makeText(LoginActivity.this, "New account created", Toast.LENGTH_SHORT).show();
startActivity(intent);
finish();
}
});
} catch (IllegalStateException e) {
}
我删除了它所指的网站。如您所见,我正在尝试捕获logcat中给出的可能错误,但是我不确定是否有能力。 我想知道我是否能够防止logcat出现错误。
答案 0 :(得分:4)
之所以无法捕获该异常,是因为您试图在实际发生的方法之外捕获该异常:
try {
psHandler.addNewUser(name, LoginActivity.this, new RetrievedCallback<Void>() {
@Override
public void execute(Void input) {
throw new IllegalStateException();
}
});
} catch (IllegalStateException e) {
// This line will never be reached because the exception
// is not thrown here, but inside the callback method
}
相反,您应该在回调方法内添加try/catch
:
psHandler.addNewUser(name, LoginActivity.this, new RetrievedCallback<Void>() {
@Override
public void execute(Void input) {
try {
throw new IllegalStateException();
} catch (IllegalStateException e) {
// This line will be reached
}
}
});
答案 1 :(得分:1)
首先,您的try catch不执行任何操作,您需要执行以下操作,例外情况如下。
try {
} catch (Exception e) {
Exception
System.out.println("Error " + e.getMessage());
return null;
}
第二点已经指出,您的错误似乎是在另一点抛出的,应该对此进行调查。
答案 2 :(得分:1)
尝试在execute()
内捕获异常
psHandler.addNewUser(name, LoginActivity.this, new RetrievedCallback<Void>() {
@Override
public void execute(Void input) {
try {
Intent intent;
intent = new Intent(LoginActivity.this, MainActivity.class);
Toast.makeText(LoginActivity.this, "New account created", Toast.LENGTH_SHORT).show();
startActivity(intent);
finish();
} catch (IllegalStateException e) {
Log.i("CatchExceptions", e.getMessage());
}
}
});
答案 3 :(得分:0)
在捕获IllegalStateException之后也捕获异常,并记录详细信息,该详细信息应为您提供有关该异常的更多信息。