自定义异常(Exception)和运行时异常(RuntimeException )


自定义异常,运行时异常都可以定义提示指定信息

//自定义异常
package com.certus.util.httpClient;

public class HttpClientException extends Exception{

/**
*
*/
private static final long serialVersionUID = 1L;

public HttpClientException(String path,String message) {
super(path + " " + message);
}
public HttpClientException(String message) {
super( message);
}
public HttpClientException() {
super();
}
}


//运行时异常

package com.certusnet.nfv.mano.exception;

import java.util.Locale;

import javax.ws.rs.ext.Provider;

import org.springframework.web.context.ContextLoaderListener;

/**
* ManoException,统一处理异常编码和异常信息
* @author Biwei
*
*/
@Provider
public class ManoException extends RuntimeException {

public static final long serialVersionUID = 11111111111L;

public ManoException(Throwable throwable) {
super(throwable);
}

public ManoException(String code, String msg) {
super(msg);
this.code = code;
}


/**
* message key
*/
private String code;

/**
* message params
*/
private Object[] params;

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public Object[] getParams() {
return params;
}

public void setParams(Object[] params) {
this.params = params;
}
}

ajax的setupajax可以监听到运行时异常,


应用实例:

@Service("overviewService")
public class OverviewServiceImpl implements IOverviewService {
    private Logger logger = Logger.getLogger(OverviewServiceImpl.class);

    @Override
    public SummeryOfResourcesVO getSummeryOfResource() {
        logger.info("查询一组资源使用情况(云主机、虚拟内核、虚拟内存、安全组)信息");
        final SummeryOfResourcesVO vo = new SummeryOfResourcesVO();
        final JSONObject[] provider = new JSONObject[1];
        final String[] reslt= new String[1];


       
        /**取资源使用情况*/
        HttpClientRequest request = new HttpClientGetRequest(ConfigFileLoad.getConfContent("API_IP") + "/rest/resource_used");
        try {
            request.process(new HttpClientResponseHandler() {
                @Override
                public void handle(String response, String retCode, String msg) throws HttpClientException {
                    logger.debug("查询一组资源使用情况信息,返回状态:" + retCode + ",返回信息:" + msg);
                    JSONObject obj = JSONObject.parseObject(response);
                    if(obj.get("result")!=null){
                    System.out.println(obj.get("result").toString());
                    JSONObject jsonObj = JSONObject.parseObject(obj.get("result").toString());
                    if (jsonObj == null){
                    return;
                    }
                   
                       
                    // 一 、请求并计算 云主机信息
                    Integer vms = jsonObj.getInteger(Constants.OverView.VMS);
                    Integer used_vms = jsonObj.getInteger(Constants.OverView.USED_VMS);
                    Integer unused_vms = 0;
                    if (vms == null || vms.equals("")) {
                        vms = 0;
                    } else if (used_vms == null || used_vms.equals("")) {
                        used_vms = 0;
                    } else {
                        unused_vms = vms - used_vms;
                    }
                    vo.setCloudPlatformAll(String.valueOf(vms));
                    vo.setCloudPlatformUsed(String.valueOf(used_vms));
                    vo.setCloudPlatformUnUsed(String.valueOf(unused_vms));
                    // 二 、请求 虚拟内核
                    Integer cpus = jsonObj.getInteger(Constants.OverView.CPUS);
                    Integer used_cpus = jsonObj.getInteger(Constants.OverView.USED_CPUS);
                    Integer unused_cpus = 0;
                    if (cpus == null || cpus.equals("")) {
                        cpus = 0;
                    } else if (used_cpus == null || used_cpus.equals("")) {
                        used_cpus = 0;
                    } else {
                        unused_cpus = cpus - used_cpus;
                    }
                    vo.setVirtualKernelAll(String.valueOf(cpus));
                    vo.setVirtualKernelUsed(String.valueOf(used_cpus));
                    vo.setVirtualKernelUnUsed(String.valueOf(unused_cpus));
                    // 三、请求 虚拟内存
                    Integer mems = jsonObj.getInteger(Constants.OverView.MEMS);
                    Integer used_mem = jsonObj.getInteger(Constants.OverView.USED_MEM);
                    Integer unused_mem = 0;
                    if (mems == null || mems.equals("")) {
                        mems = 0;
                    } else if (used_mem == null || used_mem.equals("")) {
                        used_mem = 0;
                    } else {
                        unused_mem = mems - used_mem;
                    }
                    vo.setVirtualMemoryAll(String.valueOf(mems));
                    vo.setVirtualMemoryUsed(String.valueOf(used_mem));
                    vo.setVirtualMemoryUnUsed(String.valueOf(unused_mem));
                    // 四、请求 安全组
                    Integer security_group = jsonObj.getInteger(Constants.OverView.SECURITY_GROUP);
                    Integer used_security_group = jsonObj.getInteger(Constants.OverView.USED_SECURITY_GROUP);
                    Integer unused_security_group = 0;
                    if (security_group == null || security_group.equals("")) {
                        security_group = 0;
                    } else if (used_security_group == null || used_security_group.equals("")) {
                        used_security_group = 0;
                    } else {
                        unused_security_group = security_group - used_security_group;
                    }
                    vo.setSecurityGroupAll(String.valueOf(security_group));
                    vo.setSecurityGroupUsed(String.valueOf(used_security_group));
                    vo.setSecurityGroupUnUsed(String.valueOf(unused_security_group));
                }else{
               
                    /**provider连接数*/
                  HttpClientRequest requestProvider = new HttpClientGetRequest(ConfigFileLoad.getConfContent("API_IP") + "/rest/provider_network_cn");
                  try {
                 
                  requestProvider.process(new HttpClientResponseHandler() {
                          @Override
                          public void handle(String response, String retCode, String msg) throws HttpClientException {
                              logger.debug("查询一组资源使用情况信息,返回状态:" + retCode + ",返回信息:" + msg);
                              provider[0] = JSONObject.parseObject(response);
                              System.out.println(provider[0].get("result").toString()+"rrrrrrrrrrrrr");
                              String jsonObj = provider[0].get("result").toString();
                              reslt[0] =jsonObj;
                              if (jsonObj == null)
                                  return;
                          
                          }
                      });
                  } catch (HttpClientException e) {
                      e.printStackTrace();
                  }
                if(reslt[0].equals("0")){


/////////////////////////////////////抛出运行时异常/////////////////////////,ajax的setupajax可以拦截到


                throw new ManoException("0","请检查openstack资源提供者是否已添加");
                }
                //throw new HttpClientException("没建立连接");
                }
            }});
        }
/////////////////////////////这里捕获自定义异常HttpClientException
catch (HttpClientException e) {
        throw new ManoException("1","没建立连接");
        }

        logger.info("SummeryOfResourcesVO is " + vo.toString());
        return vo;
    }

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2207671