我正面临这个问题。我想发送一封电子邮件,我在 AsyncTask 类中编写代码。但我无法捕获网络异常或任何异常。以下是我发送电子邮件的代码
public class SendMail extends AsyncTask<Void, Object, Void> {
int count =0;
@Override
protected Void doInBackground(Void... voids) {
GMailSender sender = new GMailSender("user@gmail.com", "password");
try {
sender.sendMail("[Quick Hide video]Backup password",
"Your backup password is: "+utils.getPassword(),
"user@gmail.com",
"thienvan.ptit@gmail.com");
} catch (Exception e) {
Log.d("Check","check");
// the code does not run to this with network is not connect
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// do something
}
}
GMailSender.java
public class GMailSender extends javax.mail.Authenticator {
...
public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
try{
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setDataHandler(handler);
if (recipients.indexOf(',') > 0)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
Transport.send(message);
}catch(Exception e){
Log.d("thien.van","Network Exception");
}
}
}
任何人都可以帮助我在 Asyntask 中捕获异常 谢谢