zoukankan      html  css  js  c++  java
  • java程序运行中如果出现异常未被处理,将会被抛到java虚拟机进行处理,程序中断运行后被挂起,在页面输出错误信息(不会输出到console)

    下面的代码中,因为我是使用 

    for (Iterator<Element> i = el.elements().iterator(); i.hasNext(); )

    迭代器遍历根节点的所有子节点的flag,但是因为linux基线有 <initcmd> 节点,导致flag为空,

    在传入service中进行数据库操作时抛出异常未被处理导致程序被挂起,错误信息不输出到console,直接打印到了页面。

    解决方法就是try catch处理掉异常并返回false即可

        public boolean isFound(String xcwIndex) {
            try {
                XconfigLinuxExample example = new XconfigLinuxExample();
                XconfigLinuxExample.Criteria criteria = example.createCriteria();
                criteria.andXcwindexEqualTo(xcwIndex);
    
                long count = xconfigLinuxMapper.countByExample(example);
                return count > 0;
            }catch (Exception e){
    //            System.out.println("xcwIndex为空,当次未遍历到flag");
                return false;
            }
        }


        public void getSysTypeByUuid(String uuid) throws IOException, DocumentException {
    
    
            switch (uuid){
                case "66c221be-6ab2-ef53-1589-fe16877914e2": //windows
                    importDataXML("66c221be-6ab2-ef53-1589-fe16877914e2");break;
                case "66c221be-6ab2-ef53-1589-fe16877914f4": //linux linux系都需要去除 <initcmd> 的干扰
                    linuxBaseline("66c221be-6ab2-ef53-1589-fe16877914f4");break;
            }
        }
        public void linuxBaseline(String uuid) throws DocumentException, IOException {
    
            JSONObject jsonObject = new JSONObject();
            String result = null;
    
            CompTools compTools = new CompTools();
    
            String path = "C:\RM-ROOT\upload\assetsConfResultXml\" + uploadedFileName;
    
    //        创建 dom4j 解析器
            SAXReader reader = new SAXReader();
            Document document = reader.read(new File(path));
            Element root = document.getRootElement();
    
    
            List<Element> elements = root.elements();
            String flag;
            String xcwValue;
            Integer noneComplianceConfCount = 0;
            for (Element el :
                    elements) {
                for (Iterator<Element> i = el.elements().iterator(); i.hasNext(); ) {
                    Element element = (Element) i.next();
    
                    flag = element.attributeValue("flag");
                    if (xconfigLinuxService.isFound(flag)) {
                        XconfigLinux allByXcwIndex = xconfigLinuxService.getAllByXcwIndex(flag);
                        xcwValue = element.element("cmd").element("value").getText();
                        result = compTools.linuxComp(allByXcwIndex.getCindex().toString(), flag, xconfigLinuxService, xcwValue);
                        jsonObject.put(flag, result);
                        if ("1".equals(result)){
                            noneComplianceConfCount+=1;
                        }
    
                    } else {
    //                    System.out.println("没找到:"+flag);
                    }
    
    
                }
            }
            assetsService.saveAssetsData(OriginalFilename,jsonObject,noneComplianceConfCount,uuid);
        }
  • 相关阅读:
    Intellij Idea 创建Web项目入门
    使用swagger作为restful api的doc文档生成
    SpringMVC中的参数绑定总结
    Spring注解@Resource和@Autowired区别对比
    java的(PO,VO,TO,BO,DAO,POJO)解释
    java有几种对象(PO,VO,DAO,BO,POJO)
    clone项目到本地
    修改虚拟机上Linux系统的IP地址
    虚拟机下CentOS 6.5配置IP地址的三种方法
    系统重启
  • 原文地址:https://www.cnblogs.com/kinome/p/9444523.html
Copyright © 2011-2022 走看看