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

Posted 大小姐的生产工厂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    }

 

以上是关于java程序运行中如果出现异常未被处理,将会被抛到java虚拟机进行处理,程序中断运行后被挂起,在页面输出错误信息(不会输出到console)的主要内容,如果未能解决你的问题,请参考以下文章

jsp学习与提高——JSP 异常处理

try-catch和throw,throws的区别 (转)

c# 异常处理finally存在的必要性

Java异常 Exception类及其子类

java异常

JSP异常处理