【问题标题】:try catch crash application android尝试捕获崩溃应用程序android
【发布时间】:2013-01-14 13:33:18
【问题描述】:

我正在做一个 Android 应用程序,但我遇到了同样的问题:例如,如果我想要一个第二类的变量,我的应用程序就会崩溃。

这是我的代码示例:

public class Classement extends Activity{

TextView textview;
GetCode getCode = new GetCode();
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.classement);
    textview = (TextView)findViewById(R.id.textView1);
    try {
        textview.setText(String.valueOf(getCode.methode()[1]));
    } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

我的日志:

01-14 13:39:13.740:I/Process(3304):发送信号。 PID:3304 SIG:9 01-14 13:39:22.770:W/Trace(3342):来自 nativeGetEnabledTags 的意外值:0 01-14 13:39:22.791:W/Trace(3342):来自 nativeGetEnabledTags 的意外值:0 01-14 13:39:22.930:W/Trace(3342):来自 nativeGetEnabledTags 的意外值:0 01-14 13:39:22.930:W/Trace(3342):来自 nativeGetEnabledTags 的意外值:0 01-14 13:39:23.440: D/dalvikvm(3342): GC_FOR_ALLOC 释放 54K,7% 释放 2514K/2688K,暂停 33ms,共 38ms 01-14 13:39:23.450:I/dalvikvm-heap(3342):将堆(碎片情况)增加到 3.210MB,分配 674916 字节 01-14 13:39:23.510: D/dalvikvm(3342): GC_FOR_ALLOC 释放 1K,6% 释放 3171K/3348K,暂停 59ms,总共 59ms 01-14 13:39:23.580: D/dalvikvm(3342): GC_CONCURRENT freed

方法():

package com.example.gotteron;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;


public class GetCode {

    //Recupere le code HTML de la page
    public int [] methode() throws IOException{
        URL oracle = new URL("http://www.nationalleague.ch/NL/fr/");
        URLConnection yc = oracle.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                yc.getInputStream()));
        String inputLine;
        String s1 = "";
        while ((inputLine = in.readLine()) != null)
            s1 = s1 + inputLine;
        in.close();

        //12 car 12 équipes
        int tableauEquipes [] = new int [12];


        //Variable numérique de l'emplacement dans le code HTML pour chaque équipe
        //Le string représente l'équipe en HTML dans le tableau
        // doit apparaître 1x dans le code


        int Berne = s1.indexOf(">SC Bern</td>");
        int Fribourg = s1.indexOf("Fribourg</td>");
        int Geneve = s1.indexOf("Gen&egrave;ve</td>");
        int Zug = s1.indexOf("EV Zug</td>");
        int ZSC = s1.indexOf("ZSC Lions</td>");
        int Davos = s1.indexOf("HC Davos</td>");
        int Lugano = s1.indexOf("HC Lugano</td>");
        int Kloten = s1.indexOf("Kloten Flyers</td>");
        int Bienne = s1.indexOf("EHC Biel</td>");
        int Lakers = s1.indexOf("Lakers</td>");
        int Ambri = s1.indexOf("Ambri-Piotta</td>");
        int SCL = s1.indexOf("SCL Tigers</td>");

        //Mettre variables dans tableau
        tableauEquipes[0] = Berne;
        tableauEquipes[1] = Fribourg;
        tableauEquipes[2] = Geneve;
        tableauEquipes[3] = Zug;
        tableauEquipes[4] = ZSC;
        tableauEquipes[5] = Davos;
        tableauEquipes[6] = Lugano;
        tableauEquipes[7] = Kloten;
        tableauEquipes[8] = Bienne;
        tableauEquipes[9] = Lakers;
        tableauEquipes[10] = Ambri;
        tableauEquipes[11] = SCL;


        //Tri Tableau dans l'ordre croissant
        Arrays.sort(tableauEquipes);

        // Trouve la la place dans le classement de Berne
        int tdbBerne = 0;
        int tdbBerneDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbBerne++;
            if (tableauEquipes[i] == s1.indexOf(">SC Bern</td>")) {
                System.out.println("Berne est" + tdbBerne);
            }
        }
        tdbBerneDefinitif = tdbBerne;

        // Trouve la la place dans le classement de Fribourg
        int tdbFribourg = 0;
        int tdbFribourgDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbFribourg++;
            if (tableauEquipes[i] == s1.indexOf("Fribourg</td>")) {
                System.out.println("Fribourg est" + tdbFribourg);
                tdbFribourgDefinitif = tdbFribourg;
            }
        }
        System.out.println(tdbFribourgDefinitif);

        // Trouve la la place dans le classement de Geneve
        int tdbGeneve = 0;
        int tdbGeneveDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbGeneve++;
            if (tableauEquipes[i] == s1.indexOf("Gen&egrave;ve</td>")) {
                System.out.println("Geneve est" + tdbGeneve);

            }
        }
        tdbGeneveDefinitif = tdbGeneve;

        // Trouve la la place dans le classement de Zug
        int tdbZug = 0;
        int tdbZugDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbZug++;
            if (tableauEquipes[i] == s1.indexOf("EV Zug</td>")) {
                System.out.println("Zug est" + tdbZug);
            }
        }
        tdbZugDefinitif = tdbZug;

        // Trouve la la place dans le classement de ZSC
        int tdbZSC = 0;
        int tdbZSCDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbZSC++;
            if (tableauEquipes[i] == s1.indexOf("ZSC Lions</td>")) {
                System.out.println("ZSC Lions est" + tdbZSC);
            }
        }
        tdbZSCDefinitif = tdbZSC;

        // Trouve la la place dans le classement de Davos
        int tdbDavos = 0;
        int tdbDavosDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbDavos++;
            if (tableauEquipes[i] == s1.indexOf("HC Davos</td>")) {
                System.out.println("Davos est" + tdbDavos);
            }
        }
        tdbDavosDefinitif = tdbDavos;

        // Trouve la la place dans le classement de Lugano
        int tdbLugano = 0;
        int tdbLuganoDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbLugano++;
            if (tableauEquipes[i] == s1.indexOf("HC Lugano</td>")) {
                System.out.println("Lugano est" + tdbLugano);
            }
        }
        tdbLuganoDefinitif = tdbLugano;

        // Trouve la la place dans le classement de Kloten Flyers
        int tdbKloten = 0;
        int tdbKlotenDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbKloten++;
            if (tableauEquipes[i] == s1.indexOf("Kloten Flyers</td>")) {
                System.out.println("Kloten est" + tdbKloten);
            }
        }
        tdbKlotenDefinitif = tdbKloten;

        // Trouve la la place dans le classement de Bienne
        int tdbBienne = 0;
        int tdbBienneDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbBienne++;
            if (tableauEquipes[i] == s1.indexOf("EHC Biel</td>")) {
                System.out.println("Bienne est" + tdbBienne);
            }
        }
        tdbBienneDefinitif = tdbBienne;

        // Trouve la la place dans le classement de Lakers
        int tdbLakers = 0;
        int tdbLakersDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbLakers++;
            if (tableauEquipes[i] == s1.indexOf("Lakers</td>")) {
                System.out.println("Lakers est" + tdbLakers);
            }
        }
        tdbLakersDefinitif = tdbLakers;

        // Trouve la la place dans le classement de Ambri
        int tdbAmbri = 0;
        int tdbAmbriDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbAmbri++;
            if (tableauEquipes[i] == s1.indexOf("Ambri-Piotta</td>")) {
                System.out.println("Ambri est" + tdbAmbri);
            }
        }
        tdbAmbriDefinitif = tdbAmbri;

        // Trouve la la place dans le classement de SCL
        int tdbSCL = 0;
        int tdbSCLDefinitif = 0;
        for (int i = 0; i < tableauEquipes.length; i++) {
            tdbSCL++;
            if (tableauEquipes[i] == s1.indexOf("SCL Tigers</td>")) {
                System.out.println("SCL est" + tdbSCL);
            }
        }
        tdbSCLDefinitif = tdbSCL;

        int [] classement = {tdbSCLDefinitif, tdbAmbriDefinitif, tdbLakersDefinitif, tdbBienneDefinitif, tdbKlotenDefinitif,
                    tdbLuganoDefinitif, tdbDavosDefinitif, tdbZSCDefinitif, tdbZugDefinitif, tdbGeneveDefinitif, tdbFribourgDefinitif,
                    tdbBerneDefinitif};
        Arrays.sort(classement);
    return classement;
    }
}

【问题讨论】:

  • 请从 logcat 发布堆栈跟踪
  • 能否把getCode.methode()的代码贴出来
  • 我用 logcat 和我的代码编辑了我的消息
  • 您的 Android Manifest 中有 Internet 访问权限吗?
  • YES:

标签: android crash try-catch


【解决方案1】:

首先,IOException 不需要捕获你得到的异常。所以把 IOException 改成 Exception,所有异常的超类。

然后,检查你的 .methode,它是否返回一个数组?

【讨论】:

  • 我更改了“IOException”并检查了返回。还是不行
  • Logcat 会告诉您发生了什么,只需检查那里。另一件事可能是您的 GetCode 对象的构造函数正在崩溃,它是在 onCreate 方法之前创建的。
猜你喜欢
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多