关于异常的处理
07版导入的话会出现OfficeXmlFileException异常,我将07版的解析方法封装成一个函数放在异常之下,应该会执行其下的代码,正常导入07版,为什么我开断点调试,却发现我放入07版的Word却出现的Exception的异常,执行的是Exception下的代码,,,难道,Exception捕获能力更强吗?

0
收起
正在回答 回答被采纳积分+1
5回答
MySweeties
2019-02-19 14:41:14
public ImportWordResultDto imp(ImportWordParamDto dto) {
ImportWordResultDto result = new ImportWordResultDto();
result.setTitle(dto.getTitle());
HWPFDocument doc = null;
try {
doc = new HWPFDocument(dto.getWord().getInputStream());
result.setContent(doc.getDocumentText().replace("\r", "<br/>"));
return result;
} catch (OfficeXmlFileException oe) {
result.setMsg("这是一个07版的Word");
//return ImportWordResultDto(dto, result);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("这可能不是一个Word");
return result;
} finally {
if(null != doc) {
try {
doc.close();
return result;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
XWPFDocument docx = null;
try {
docx = new XWPFDocument(dto.getWord().getInputStream());
List<XWPFParagraph> paragraphList = docx.getParagraphs();
StringBuilder content = new StringBuilder();
for(int i = 0; i < paragraphList.size(); i ++) {
if(i != 0) {
content.append("<br/>");
}
content.append(paragraphList.get(i).getText());
}
result.setContent(content.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(null != docx) {
try {
docx.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return result;
}
/*
public ImportWordResultDto imp07(ImportWordParamDto dto, ImportWordResultDto result) {
XWPFDocument docx = null;
try {
docx = new XWPFDocument(dto.getWord().getInputStream());
List<XWPFParagraph> paragraphList = docx.getParagraphs();
StringBuilder content = new StringBuilder();
for(int i = 0; i < paragraphList.size(); i ++) {
if(i != 0) {
content.append("<br/>");
}
content.append(paragraphList.get(i).getText());
}
result.setContent(content.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(null != docx) {
try {
docx.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return result;
}
*/以上是WordService的代码内容?请老师解答,运行导入07版后,得到的是

MySweeties
2019-02-18 22:36:57
按照视频中所写的,在OfficeXmlFileException的异常下不加return,会继续执行07版解析的代码,但是我实际调试中,07版的总是失败,它直接被Exception捕获了,根本没往下执行了

从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星