2012-07-12 50 views
1

在下面的行内代码里面的方法,我打电话一会儿loop.I需要返回到while循环,如果发生任何错误下一个记录进程中validatePersonDTO方法在validatePersonDTO的当前记录的方法内。返回到while循环的条件如果发生错误包含的语句

注:

ValidatepersonDTo方法是在从其中while循环存在其他类。

这是一个非常基本的问题,我已经尝试了一些选择,但也继续或回报将无法正常工作。

所以,请让我知道你的建议。

while ((nextLine = reader.readNext()) != null) { 
hrUploadValidator.validatePersonDTO(personDTO); 
} 

public void validatePersonDTO(PersonDTO personDTO) { 
    try {   
     validateCdsId(personDTO, logDTO,regionIdList);   
     validateEmpFirstName(personDTO, logDTO);    
     validateEmpLastName(personDTO, logDTO);   
     validateEffectiveIn(personDTO, logDTO); 
} 
+0

请张贴编译代码。 “如果在validatePersonDTO中发生任何错误”,你的意思是什么? – 2012-07-12 12:11:14

+0

嗨Nizet,如果里面validateCdsId()方法,我面临着这样的错误,当前记录的cdsid根据项目的规格是无效的,这是一个error.So我需要跳过从validateCdsId记录和退出()方法,也跳过剩下的3个方法返回while来处理下一条记录。 – ashwinsakthi 2012-07-12 12:20:40

回答

3

假设validatePersonDTO验证失败时抛出异常(这是唯一的选择,因为该方法是void),你缺少一个try/catch块你while循环内:

while ((nextLine = reader.readNext()) != null) { 
    try { 
     hrUploadValidator.validatePersonDTO(personDTO); 
    } catch (Exception ex) { 
     // Log/otherwise process your exception here 
    } 
} 

一旦例外是日志GED或以其他方式在catch块处理,你的循环将继续从上次停止的地方它的迭代。

0

添加try/catch你的循环代码,就像这样:

while ((nextLine = reader.readNext()) != null) 
{ 
    try 
    { 
     hrUploadValidator.validatePersonDTO(personDTO); 
    } 
    catch (Throwable x) 
    { 
    } 
} 
0

如果方法validatePersonDTO抛出一个Exception,那么你可以围绕它的调用try-catch和在catch语句中做continue声明。

0

如果你想反应的异常,不抓他们validatePersonDTO而是在while循环:

while ((nextLine = reader.readNext()) != null) { 
    try {   
    hrUploadValidator.validatePersonDTO(personDTO); 
    } catch (ErrorThrownByValidationMethods e) { 
    continue; 
    } 
    // Processing 
} 

public void validatePersonDTO(PersonDTO personDTO) throw ErrorThrownByValidationMethods { 

    validateCdsId(personDTO, logDTO,regionIdList);   
    validateEmpFirstName(personDTO, logDTO);    
    validateEmpLastName(personDTO, logDTO);   
    validateEffectiveIn(personDTO, logDTO); 

} 
0

您可以使用布尔标识的标志,它从该方法返回真值执行while(如果执行成功),则向前移动,或者如果返回false,则再次在方法中执行并更新值。

你可以像这样

boolean x=false; 
    while(<your condition>&&x==false) 
    { 
    try 
     { 
      <your code> 
      x=true; //last statement of try block 
     } 
    catch(Exception e) 
    { 
     x=false; 
    } 
    }