Android程序崩掉会乱,android – 即使遇到异常,应用程序也会崩溃

我正在尝试从我的应用程序连接到我的网站,我正在使用URLConnection.我已经捕获了UnknownHostException,但即使这样,应用程序也崩溃了,log cat显示以下错误.

12-22 17:17:21.992: W/System.err(2222): java.net.UnknownHostException: Unable to resolve host "mywebsite.com": No address associated with hostname

12-22 17:17:22.012: W/System.err(2222): at java.net.InetAddress.lookupHostByName(InetAddress.java:424)

12-22 17:17:22.012: W/System.err(2222): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)

12-22 17:17:22.026: W/System.err(2222): at java.net.InetAddress.getAllByName(InetAddress.java:214)

12-22 17:17:22.026: W/System.err(2222): at libcore.net.http.HttpConnection.(HttpConnection.java:70)

12-22 17:17:22.026: W/System.err(2222): at libcore.net.http.HttpConnection.(HttpConnection.java:50)

12-22 17:17:22.026: W/System.err(2222): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)

12-22 17:17:22.026: W/System.err(2222): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)

12-22 17:17:22.032: W/System.err(2222): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)

12-22 17:17:22.032: W/System.err(2222): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)

12-22 17:17:22.032: W/System.err(2222): at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)

12-22 17:17:22.042: W/System.err(2222): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)

12-22 17:17:22.042: W/System.err(2222): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)

12-22 17:17:22.042: W/System.err(2222): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)

12-22 17:17:22.042: W/System.err(2222): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)

12-22 17:17:22.052: W/System.err(2222): at com.example.myapp$loadMessageAsync.doInBackground(FreeSms.java:85)

12-22 17:17:22.052: W/System.err(2222): at com.example.myapp$loadMessageAsync.doInBackground(FreeSms.java:1)

12-22 17:17:22.062: W/System.err(2222): at android.os.AsyncTask$2.call(AsyncTask.java:287)

12-22 17:17:22.062: W/System.err(2222): at java.util.concurrent.FutureTask.run(FutureTask.java:234)

12-22 17:17:22.072: W/System.err(2222): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)

12-22 17:17:22.102: W/System.err(2222): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)

12-22 17:17:22.102: W/System.err(2222): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)

12-22 17:17:22.102: W/System.err(2222): at java.lang.Thread.run(Thread.java:856)

12-22 17:17:22.122: W/System.err(2222): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)

12-22 17:17:22.122: W/System.err(2222): at libcore.io.Posix.getaddrinfo(Native Method)

12-22 17:17:22.132: W/System.err(2222): at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:59)

12-22 17:17:22.132: W/System.err(2222): at java.net.InetAddress.lookupHostByName(InetAddress.java:405)

12-22 17:17:22.132: W/System.err(2222): ... 21 more

12-22 17:17:22.142: W/System.err(2222): Caused by: libcore.io.ErrnoException: getaddrinfo failed: ETIMEDOUT (Connection timed out)

12-22 17:17:22.162: W/System.err(2222): ... 24 more

12-22 17:17:22.162: D/AndroidRuntime(2222): Shutting down VM

12-22 17:17:22.162: W/dalvikvm(2222): threadid=1: thread exiting with uncaught exception (group=0x40a70930)

12-22 17:17:22.192: E/AndroidRuntime(2222): FATAL EXCEPTION: main

12-22 17:17:22.192: E/AndroidRuntime(2222): java.lang.NullPointerException

12-22 17:17:22.192: E/AndroidRuntime(2222): at com.example.myapp$loadMessageAsync.onPostExecute(FreeSms.java:101)

12-22 17:17:22.192: E/AndroidRuntime(2222): at com.example.myapp$loadMessageAsync.onPostExecute(FreeSms.java:1)

12-22 17:17:22.192: E/AndroidRuntime(2222): at android.os.AsyncTask.finish(AsyncTask.java:631)

12-22 17:17:22.192: E/AndroidRuntime(2222): at android.os.AsyncTask.access$600(AsyncTask.java:177)

12-22 17:17:22.192: E/AndroidRuntime(2222): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)

12-22 17:17:22.192: E/AndroidRuntime(2222): at android.os.Handler.dispatchMessage(Handler.java:99)

12-22 17:17:22.192: E/AndroidRuntime(2222): at android.os.Looper.loop(Looper.java:137)

12-22 17:17:22.192: E/AndroidRuntime(2222): at android.app.ActivityThread.main(ActivityThread.java:5039)

12-22 17:17:22.192: E/AndroidRuntime(2222): at java.lang.reflect.Method.invokeNative(Native Method)

12-22 17:17:22.192: E/AndroidRuntime(2222): at java.lang.reflect.Method.invoke(Method.java:511)

12-22 17:17:22.192: E/AndroidRuntime(2222): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

12-22 17:17:22.192: E/AndroidRuntime(2222): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

12-22 17:17:22.192: E/AndroidRuntime(2222): at dalvik.system.NativeStart.main(Native Method)

public class MainActivity extends Activity {

private Button btnSkipContinue;

private TextView txtMessage,txtVersion;

private StringBuilder response;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

btnSkipContinue = (Button) findViewById(R.id.btnSkipCon);

btnSkipContinue.setVisibility(View.GONE);

txtMessage = (TextView) findViewById(R.id.txtMsgForUsers);

btnSkipContinue.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

finish();

Intent intent = new Intent(MainActivity.this,MyPage.class);

startActivity(intent);

}

});

if (isOnline()) {

try {

new loadMessageAsync().execute();

} catch (Exception ex) {

txtMessage.setText("Error while loading message. Cannot connect to server....");

btnSkipContinue.setVisibility(View.VISIBLE);

btnSkipContinue.setText("Continue");

}

} else {

Toast.makeText(getApplicationContext(),"No Internet Access",Toast.LENGTH_SHORT).show();

}

}

public boolean isOnline() {

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo netInfo = cm.getActiveNetworkInfo();

if (netInfo != null && netInfo.isConnectedOrConnecting()) {

return true;

}

return false;

}

private class loadMessageAsync extends AsyncTask {

@Override

protected Void doInBackground(Void... arg0) {

try {

URLConnection connection = new URL("http://mywebsite.com/new/Messages.aspx").openConnection();

connection.setConnectTimeout(60000);

connection.setRequestProperty("Accept-Charset","UTF-8");

InputStream responseStream = connection.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(responseStream));

response = new StringBuilder();

String line;

while ((line = br.readLine()) != null) {

response.append(line);

}

} catch (UnknownHostException ex) {

response.append("

Error while loading message. Cannot connect to server.");

} catch (IOException ex) {

response.append("

Error while loading message. Cannot connect to server..");

}

return null;

}

@Override

protected void onPostExecute(Void result) {

super.onPostExecute(result);

try {

txtMessage.setText(Html.fromHtml(response.toString()));

} catch (Exception ex) {

txtMessage.setText("Error while loading message. Cannot connect to server...");

}

btnSkipContinue.setVisibility(View.VISIBLE);

btnSkipContinue.setText("Continue");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值