`
y806839048
  • 浏览: 1126119 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

自定义异常(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;
    }

分享到:
评论

相关推荐

    自定义异常

    通过创建自定义异常类,抛出和捕获异常,我们可以确保程序在遇到预期错误时能够给出明确的反馈,并采取适当的措施。同时,结合合适的工具和组件,可以进一步优化异常处理机制,提升软件的用户体验。

    异常类:自定义异常类

    - 自定义异常类通常继承自 `Exception` 或其子类(如 `RuntimeException`)。 - 继承 `Exception` 表示该异常需要被捕获或声明抛出,而继承 `RuntimeException` 则表示该异常无需捕获或声明即可抛出。 2. **添加...

    实际项目中java自定义异常

    自定义异常类需要继承自`Exception`类或者其子类,例如`RuntimeException`。创建一个自定义异常类,你可以包含构造函数、属性和方法,以满足项目需求。下面是一个简单的自定义异常类的例子: ```java public class ...

    Java自定义异常源代码

    在Java编程语言中,异常处理是一项关键特性,用于处理程序运行时可能出现的错误或不正常情况。...通过理解异常的继承体系,编写自定义异常类,以及正确地抛出和处理异常,我们可以构建更加健壮和易用的Java应用程序。

    Java异常处理-自定义异常类及课后练习

    - **继承异常类型**:创建自定义异常类时,通常需要继承`Exception`或`RuntimeException`。如果希望异常为编译时异常,继承`Exception`;如果希望异常为运行时异常,继承`RuntimeException`。 - **构造器**:提供...

    如何创建和使用自定义异常

    - 自定义异常通常需要继承自`Exception`类或其子类(如`RuntimeException`)。这里以继承`Exception`为例。 - 示例:创建一个名为`CustomerExistsException`的自定义异常类。 ```java public class ...

    Java自定义异常类_1.txt

    1. **继承`Exception`或其子类**:如果自定义异常应该被捕获,则继承`Exception`或其子类;如果该异常代表程序内部错误,考虑继承`Error`。 2. **添加必要的构造方法**:通常需要提供无参构造函数、带消息字符串的...

    Java 实例 - 自定义异常源代码-详细教程.zip

    2. **自定义异常类**:自定义异常通常继承自`Exception`类或者其子类,如`RuntimeException`。这样做的好处是可以创建与应用需求紧密相关的异常类型,提供更精确的错误信息。 3. **构造函数**:创建自定义异常类时...

    java如何自定义异常用代码.doc

    在这个例子中,我们定义了两个自定义异常类:`ChushufuException`和`ChushulingException`,它们分别表示“除数为负”和“除数为零”的错误情况。这两个类都继承自`Exception`,这意味着它们是受检异常,需要在方法...

    【Java】自定义异常和异常中的方法覆盖注意事项

    文章目录1. 自定义异常1.1 定义方式...备注:受查异常CheckedException和运行时异常RuntimeException的定义方式没有区别。 // 受查异常 (编译前,就必须处理的异常,需要throws声明传递出去) class SexMismatchExcepti

    java自定义异常之用户登录

    自定义异常通常继承自`Exception`类或其子类,例如`RuntimeException`。在用户登录的场景中,我们可以创建一个名为`InvalidLoginException`的自定义异常,用来表示登录失败的各种情况,比如用户名不存在、密码错误等...

    382.380.JAVA基础教程_异常处理-如何自定义异常(382).rar

    创建自定义异常通常是继承`Exception`或其子类,例如`RuntimeException`。这样做可以让你的异常更加具体,更好地表达出异常的原因和类型。 以下是一些自定义异常的步骤: 1. **定义新异常类**:创建一个新的类,...

    Java软件开发实战 Java基础与案例开发详解 10-8 自定义异常类 共5页.pdf

    如果希望定义的异常可以在运行时自动处理,则可以选择继承`RuntimeException`。 2. **添加构造方法**:为自定义异常类添加一个或多个构造方法,以便在创建异常实例时可以传递错误消息或其他相关信息。 3. **实现必要...

    集合自定义异常

    在这个“集合自定义异常”的主题中,我们将深入探讨如何在处理集合类(如ArrayList、LinkedList、HashMap等)时,根据需求自定义异常类型。 首先,我们了解Java中的异常处理机制。Java中的异常都是继承自`java.lang...

    exception 异常处理 exception

    在上述代码示例中,定义了一个名为 `MyException` 的自定义异常类,它继承了 `Exception`。 - **定义自定义异常类**: ```java import java.io.*; class MyException extends Exception { private int id; ...

    Java自定义异常类的实例详解

    有时,根据需要,自定义异常也可能直接继承`RuntimeException`,这用于表示不期望程序员捕获的运行时错误。 下面是一个自定义异常类`MyException`的实例: ```java class MyException extends Exception { ...

    第十八章异常(Exception)处理

    - `RuntimeException`示例:例如,尝试除以零会导致`ArithmeticException`,这属于`RuntimeException`,如果没有捕获,程序会在运行时崩溃。 18.4 示例 ```java public class TryCatchExample { public static ...

    Java-CustomExceptions:Java 自定义异常

    自定义异常如果继承自`RuntimeException`或其子类,将成为未检查异常,否则默认为检查异常。未检查异常在编译时不强制捕获,而检查异常则必须显式处理或声明在方法签名中。 ### 七、自定义异常的最佳实践 1. **...

    java 除0发生的算术异常(ArithmeticException)

    总的来说,`ArithmeticException`是Java中常见的运行时异常之一,通过合理的异常处理和输入验证,我们可以避免这类异常的发生,提高程序的健壮性。理解并妥善处理这种异常对于编写稳定且可靠的Java程序至关重要。

Global site tag (gtag.js) - Google Analytics