请问为什么不可以用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数据解析等所有异常,通常的处理是将异常根据不同的类型进行分别捕获,并调用不同的处理方法。
相似问题