私は、後で変数に格納されて使用される値worksheetIDをチェックするjsonarrayを持っています。問題は、この値が存在しないとアンドロイドデバイスがクラッシュし、try catchブロックを通して実行しても、クラッシュすることを止めることはないということです。ここでアンドロイドデバイスがクラッシュする原因となるJson例外
は私のコードです:ここでは
try {
try
{
jsonArray = jsonObject.getJSONArray("WorksheetID");
Log.v("Worked", "WorksheetID is in ");
} catch (JSONException e)
{
Log.v("failed", "No WorksheetID");
Log.v("failed", WorksheetID[0]+"");
e.printStackTrace();
}
if(WorksheetID[0] != 0)
{
WorksheetID = new int[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
try {
WorksheetID[i] = jsonArray.getInt(i);
} catch (JSONException e)
{
e.printStackTrace();
Log.v("failed", "cant do loop 2");
WorksheetID[0] = 0;
}
}
}
else
{
return;
}
}catch (Exception e)
{
WorksheetID[0] = 0;
}
は私が取得していますlogcatエラーです。何らかの理由でマシンはキャッチ自体のすべての行を実行しなくても最初のキャッチ後にシャットダウンするようです!あなたがArrayIndexOutは、ArrayIndexOutOfBoundsExceptionを取得しているとしてWorksheetIDがnullの場合は常に
03-21 08:55:42.494 21224-21224/net.azurewebsites.cosy W/System.err﹕ org.json.JSONException: No value for WorksheetID
03-21 08:55:42.494 21224-21224/net.azurewebsites.cosy W/System.err﹕ at org.json.JSONObject.get(JSONObject.java:355)
03-21 08:55:42.494 21224-21224/net.azurewebsites.cosy W/System.err﹕ at org.json.JSONObject.getJSONArray(JSONObject.java:549)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at net.azurewebsites.cosy.Classroom.onCreate(Classroom.java:127)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5231)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:135)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5001)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
03-21 08:55:42.498 21224-21224/net.azurewebsites.cosy V/failed﹕ No WorksheetID
03-21 08:55:42.506 21224-21224/net.azurewebsites.cosy D/AndroidRuntime﹕ Shutting down VM
03-21 08:55:42.506 21224-21224/net.azurewebsites.cosy W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4d59b20)
03-21 08:55:42.510 21224-21224/net.azurewebsites.cosy E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: net.azurewebsites.cosy, PID: 21224
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.azurewebsites.cosy/net.azurewebsites.cosy.Classroom}: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at net.azurewebsites.cosy.Classroom.onCreate(Classroom.java:163)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
あなたはJSONExceptionをキャッチしていますが、ArrayIndexOutOfBoundsExceptionが発生しています。たぶんあなたは別の原因を探すべきでしょう –
配列とそのサイズをどのように宣言したか理解できるようにいくつかのコードを追加できますか? –
WorksheetIDキーパラメータがjsonArrayではありません。あなたの応答json形式を確認してください。 –