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);
    }

原文地址:https://www.cnblogs.com/kinome/p/9444523.html

时间: 2024-10-14 15:25:32

java程序运行中如果出现异常未被处理,将会被抛到java虚拟机进行处理,程序中断运行后被挂起,在页面输出错误信息(不会输出到console)的相关文章

Java程序-进程中的进程

进程 我们知道程序在磁盘上的时候是静态的,当他被加载到内存的时候,就变成了一个动态的,称为进程,如下图是程序被加载到内存后,在内存中的分布情况如下 此图来自http://blog.csdn.net/woshinia/article/details/41722085 具体每段的作用可以参考这篇文章,这里我们只要大概了解一下,在程序被加载到内存后,会被分为代码段,数据段,堆段和栈段.其中代码段就是存放数据,数据段存放一些全局和静态数据,堆段存放的动态创建的内存对象,而栈段则是线程栈运行的区域. Ja

[转] java书籍(给Java程序猿们推荐一些值得一看的好书 + 7本免费的Java电子书和教程 )

7本免费的Java电子书和教程 1. Thinking in Java (Third Edition) 本书的作者是Bruce Eckel,它一直都是Java最畅销的免费电子书.这本书可以帮助你系统的学习Java,里面包含有很多好的代码示例.第三版仍旧是免费的,直到第四版才开始收费,不过仍旧值得买一本收藏. Think in Java 免费下载: Thinking in Java 2. The Java Tutorials 这个教程来自于Oracle/Sun.对于初学者是不错的选择.我们可以根据

018输出错误信息与调试信息

实例说明 程序开发过程中对于业务代码的部分功能需要配合调试信息以确定代码执行流程和数据的正确性,当程序出现严重问题时还要输出作物警告信息,这样可以在调试中完成开发.本实例将介绍如何输出调试信息和错误信息. 关键技术 本实例使用System类中的out和err两个成员变量来完成测试信息和错误信息的输出,这两个都是类变量,调用输出流通用的println()方法来输出一行数据. 原文地址:https://www.cnblogs.com/cglib/p/12011762.html

java或者jsp中修复会话标识未更新漏洞

用IBM Rational AppScan扫描该漏洞部分描述: [1 / 2] 会话标识未更新 严重性: 高 测试类型: 应用程序 有漏洞的URL: *** 修复任务: 不要接受外部创建的会话标识. 会话标识未更新 应用程序 WASC 威胁分类 授权类型:会话定置 http://www.webappsec.org/projects/threat/classes/session_fixation.shtml CVE 引用 不适用 安全风险 可能会窃取或操纵客户会话和cookie,它们可能用于模仿合

Java程序开发中的简单内存分析

首先说明内存总体分为了4个部分, 包括 1.stack segment (栈区存储基本数据类型的局部变量,对象的引用名) 2.heap segment(堆区,一般用于存储java中new 出来的对象) 3.code segment (代码段) 4.data segment (数据段,静态数据常量) 其中我们程序中用关键字new出来的东西都是存放在heap segment: 程序中的局部变量存放在stack segment,这些局部变量是在具体方法执行结束之后,系统自动释放内存资源(而heap s

html加载与脚本运行中,由于html未完全加载而导致脚本找不到dom元素无法执行事件

问题: 如题,就是说alert后出现一个对话框,我没有点关闭,其他js文件或html会被加载吗,我遇到一个问题就是在页面加载时调用一个div的click事件,却没有被执行,但是在调用事件前面加上alert('xx'):运行后手动关闭提示框click事件就调用成功,为什么,也写了个sleep函数,但不论sleep多久click事件也不会被执行,那我要怎样才能自动调用这个click. 解决方法: 将代码包含在onload中,进行(window.onload())加载. 原理: 首先网页接你所编写的代

web.xml配置错误页面,及输出错误信息

1.需要在web.xml中配置相关信息 [html] view plain copy print? <!-- 默认的错误处理页面 --> <error-page> <error-code>403</error-code> <location>/403.html</location> </error-page> <error-page> <error-code>404</error-code&g

Ansible 如何只输出错误信息?

有时主机较多时,我们只想关注有问题的主机. Ansible callback 插件中有一个 actionable,官方描述为: actionable - shows only items that need attention 即只输出需要关注的部分. 但是 callback 插件只对 playbook 生效,如何对 Ad-hoc 起作用呢? 参考文档:https://docs.ansible.com/ansible/2.6/plugins/callback.html#managing-adho

powershell输出错误信息到文件

https://stackoverflow.com/questions/8925323/redirection-of-standard-and-error-output-appending-to-the-same-log-file The second way would look like this: & myjob.bat 2>&1 >> C:\MyLog.txt Or this: & myjob.bat 2>&1 | Out-File C:\M