我正在写一个方法,在这里我需要检查我收到的所有参数都不是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
}
我的问题是:
答案 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
答案 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
}