需要在Java方法中抛出异常的建议

时间:2014-02-27 03:45:52

标签: java android performance

我正在写一个方法,在这里我需要检查我收到的所有参数都不是null。如果任何参数为null,我需要以Exception.

打印该自定义消息

我的代码如下:

 public void checkParam(String emp,String id,String addr)
    {
    try{ 
      if(emp == null)
       throw new Exception("Error: Missing emp");
    else if(id== null)
       throw new Exception("Error: Missing id");
    else if(addr== null)
       throw new Exception("Error: Missing addr");
    }
    catch (Exception e) {
    e.printStackTrace();
    return;
    }
//if no exception

//do some action on params
}

我的问题是:

  1. 上述程序适合我的要求吗?
  2. 新例外 - 是否会创建大量内存,还有其他方法可以简单地执行此操作吗?

4 个答案:

答案 0 :(得分:0)

您可以按如下方式编写此函数,但是您需要捕获将调用此函数的异常。

public void checkParam(String emp,String id,String addr) throws Exception
    {

      if(emp == null){
       throw new Exception("Error: Missing emp");}
    else if(id== null){
       throw new Exception("Error: Missing id");}
    else if(addr== null){
       throw new Exception("Error: Missing addr");}

//if no exception write some more code

//do some action on params
}

当您调用此函数时,请执行以下操作

try {//pass valuse
        checkParam(emp,id,addr)
    }
    catch(Exception exc) {
        System.out.println(exc.getMessage());
    }

也访问

http://www.javamex.com/tutorials/exceptions/exceptions_throwing.shtml

http://www.akadia.com/services/java_exceptions.html

http://www.functionx.com/java/Lesson15.htm

答案 1 :(得分:0)

您正在捕获您创建的异常,在这种情况下,不会发生任何事情。抛出异常:

public void checkParam(String emp, String id, String addr) throws Exception {
    if(emp == null)
        throw new Exception("Error: Missing emp");
    if(id == null)
        throw new Exception("Error: Missing id");
    if(addr == null)
        throw new Exception("Error: Missing addr");
}

如果您没有在此功能之外捕获错误,这可能会导致应用程序崩溃。

或者,如果您只是想确保params在那里没有崩溃,只需返回一个布尔值。

public boolean checkParam(String emp, String id, String addr) {
    return emp != null && id != null && addr != null;
}

更好的是,如果您不需要知道哪个变量实际缺失,只需创建一个接受不同数量的参数的函数:

public boolean checkParam(String... param) {
    if(param != null) {
        int size = param.length;
        for(int i = 0; i < size; i++) {
            if(param[i] == null)
                return false;
        }
        return true;
    } else {
        return false;
    }
}

答案 2 :(得分:0)

在您的代码中,您自己正在捕获异常。因此,如果任何参数为null,调用者将不知道您的方法中发生的任何错误。

如果传递了无效参数,您应该从代码中抛出异常

public void checkParam(String emp,String id,String addr) throws IllegalArgumentException{
//check for exceptions
//your code after throwing the exceptions
}

此外,不是仅仅抛出Exception,而是使用特定类型的异常来准确指出错误原因,例如IllegalArgumentException

答案 3 :(得分:0)

public void checkParam(String emp,String id,String addr)
    {
      if(emp == null || id == null || addr == null) {

          // the conditional operator checking has same behavior 
          // as your if - else, to find, which parameter is null
          // it report first ever parameter which is null
          throw new Exception("Error: Missing "+ emp == null ? "emp" : id == null ? 
                              "id" : add == null ? "addr" : "" );

      }
      // control will reach here if no exception occured

}