[英]How to add file not found exception to this code?
我使用此代码使用Java发送邮件。 在这里,我将pdf文件附加到邮件中。 如果找不到文件,我想抛出文件,但找不到文件异常。该怎么办?
try{
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
message.setSubject(subject);
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setText("hai");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
//Attachement
messageBodyPart = new MimeBodyPart();
String filename = "file";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(source.getName());
multipart.addBodyPart(messageBodyPart);
}
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
try{
transport.connect(host,from,password);
} catch (AuthenticationFailedException err){
String errMsg = "Authentication fails when sending mail. Sent failed to " + receiver;
log.error(errMsg,err);
throw new AuthenticationFailedException(errMsg + err.getMessage());
}
transport.send(message);
} catch (MessagingException re) {
String localizedError = "Unexpected error occurred at Email client. Sent failed to:" + receiver + ". ";
log.error(localizedError + re.getLocalizedMessage(), re);
throw new MessagingException(localizedError + re.getLocalizedMessage(), re);
}
这是我要添加文件的代码未找到异常
你的意思是?
if(!new File(filename).exists()) throw new FileNotFoundException(filename);
虽然我有任何读取文件的函数都应该抛出该异常,所以我看不到需要添加它。
从FileDataSource的文档中获取输入/输出流方法:
此方法将返回表示数据的... Stream,如果不能这样做,则将抛出IOException。 该方法将在每次调用时返回一个InputStream的新实例。
注意,您需要处理的不仅仅是FileNotFoundException
。 如果传递目录或不可读的文件怎么办? IOException
将封装所有这些。
我本以为FileDataSource或DataHandler都可以做到这一点,但如果没有,只需添加:
new FileInputStream(filename).close();
在将filename参数传递给FileDataSource之前。 它将为您抛出该异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.