请问为什么不可以用Exception捕获异常

来源:2-7 使用Gson解析数据

TY慧o_0

2017-07-29 10:10:29

package com.example.demo;


import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.util.Log;

import android.view.View;


import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

import com.google.gson.stream.MalformedJsonException;


import org.json.JSONObject;


import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.ArrayList;


public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        initView();  //初始化视图

        initData();

    }

    private void initView() {

        findViewById(R.id.header).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                startActivity(new Intent(MainActivity.this,DetailActivity.class));

            }

        });

    }

    private void initData() {

        new Thread(){

            @Override

            public void run() {

                try {

                    URL url= new URL("http://www.imooc.com/api/teacher?type=2");

                    HttpURLConnection conn=(HttpURLConnection)url.openConnection();

                    conn.setRequestMethod("GET");

                    conn.setConnectTimeout(6000);

                    if (conn.getResponseCode()==200){

                        InputStream in =conn.getInputStream();

                        byte[] b = new byte[1024*512];

                        int len =0;

                        ByteArrayOutputStream baos =new ByteArrayOutputStream();

                        while ((len =in.read(b))>-1){

                            baos.write(b,0,len);

                        }

                        String result = baos.toString();

                        Log.e("Tag",result);

                        JSONObject json =new JSONObject(result);

                        String data = json.toString();

                        /**

                         * GSON

                         * 1、解析普通的JSON对象

                         * 2、解析JSON数组

                         */

                        Gson gson =new Gson();

                        //参数1:满足json数组形式的字符串

                        //参数2:Type对象 ,泛型将会决定json字符串最后被转化成的类型

                        ArrayList<Outline> outlines = gson.fromJson(data,new TypeToken<ArrayList<Outline>>(){}.getType());

                        for(int i=0;i<outlines.size();i++){

                            Outline o = outlines.get(i);

                            Log.e("Tag",o.getName());

                        }


                    }

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        }.start();

    }

}

为什么只用Exception捕获异常无法打印gson解析的数据

写回答

1回答

irista23

2017-07-29

你的代码是通过log方式输出的,你需要在DDMS的logcat里查看到输出。另外并不推荐使用Exception来捕获处理联网、线程、json数据解析等所有异常,通常的处理是将异常根据不同的类型进行分别捕获,并调用不同的处理方法。

0

0 学习 · 1613 问题

查看课程