private boolean updateExceptionRegister ( CatchInfo ci , int seen , int pc ) { if ( OpcodeUtils . isAStore ( seen ) ) { int reg = RegisterUtils . getAStoreReg ( this , seen ) ; ci . setReg ( reg ) ; exReg . put ( Integer . valueOf ( reg ) , Boolean . TRUE ) ; LocalVariableTable lvt = getMethod ( ) . getLocalVariableTable ( ) ; if ( lvt != null ) { LocalVariable lv = lvt . getLocalVariable ( reg , pc + 2 ) ; if ( lv != null ) { int finish = lv . getStartPC ( ) + lv . getLength ( ) ; if ( finish < ci . getFinish ( ) ) { ci . setFinish ( finish ) ; } } else { return false ; } } } return true ; }
looks to update the catchinfo block with the register used for the exception variable . If their is a local variable table but the local variable can t be found return false signifying an empty catch block .