我的问题是,我发送服务的应用程序在发送电子邮件时在AsynkTask的doInBackground中的catch块中崩溃。它一切顺利,但是例如当我得到连接超时或其他连接错误时,我可以捕获异常,但服务崩溃并在几分钟后重新启动。在这种情况下,在启动AsynkTask之前检查互联网连接是没有用的。
发送电子邮件的AsynkTask由AlarmManager启动。
为什么应用/服务结束/崩溃?我正在捕捉异常!谁能给我一个提示?
以下是相关代码:
private class LongOperation extends AsyncTask<Message, Void, String> {
@Override
protected String doInBackground(Message... msg) {
try {
Transport.send(msg[0]);
log.info("### - Mail sent");
} catch (Exception e) {
String a = e.getMessage();
Log.e("SendMail_Loc", "Error: " + a);
log.error("Error: " + a,e);
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
这是个例外:
2014-03-06 11:13:00,252 - [ERROR::de.egi.location.track.SendMail::de.egi.location.track.SendMail$LongOperation] - Error: Could not connect to SMTP host: smtp.strato.de, port: 25
javax.mail.MessagingException: Could not connect to SMTP host: smtp.xxxx.de, port: 25;
nested exception is:
java.net.ConnectException: failed to connect to smtp.xxxx.de/xx.xxx.145.133 (port 25): connect failed: ETIMEDOUT (Connection timed out)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
at javax.mail.Service.connect(Service.java:310)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:118)
at javax.mail.Transport.send0(Transport.java:188)
at javax.mail.Transport.send(Transport.java:118)
at de.egi.location.track.SendMail$LongOperation.doInBackground(SendMail.java:91)
at de.egi.location.track.SendMail$LongOperation.doInBackground(SendMail.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.net.ConnectException: failed to connect to smtp.xxxx.de/xx.xx.145.133 (port 25): connect failed: ETIMEDOUT (Connection timed out)
at libcore.io.IoBridge.connect(IoBridge.java:114)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
at java.net.Socket.connect(Socket.java:842)
at java.net.Socket.connect(Socket.java:785)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)
... 14 more
Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
at libcore.io.Posix.connect(Native Method)
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
at libcore.io.IoBridge.connect(IoBridge.java:112)
... 21 more