A sintaxe de sintáxe está errada 
Brincadeiras à parte, “umaPalavra” é um label, que é usado para sair de loops aninhados.
Exemplo:
[code]int x = 10;
labelWhile:
while ( x-- > 0 ) {
for ( int i = 0; i < 10; i++ ) {
System.out.println( i + x );
// quanto i + x for igual a 5, quebra o while, não o for.
if ( i + x == 5 )
break labelWhile;
}
}[/code]
Em C, por exemplo, um label é usado como parâmetro para um goto. Em Java a utilidade dos labels é justamente a que disse, ou seja, quebrar (break) loops aninhados ou mesmo dar um continue.
O código entre chaves é um bloco. Você pode criar quantos blocos quiser. Existem blocos normais (como você escreveu) e blocos estáticos. Blocos normais, quando inseridos fora de métodos, são executados em ordem quando um objeto de uma determinada classe é instanciado. Blocos estáticos são executados, também em ordem, durante a carga da classe. Exemplo:
[code]public class Teste {
static {
System.out.print( "a" );
}
{
System.out.print( "b" );
}
public static void teste() {
System.out.print( "c" );
}
public static void main( String[] args ) {
new Teste();
new Teste().teste();
System.out.println();
}
}[/code]
Saída: abbc. O “a” é exibido assim que a classe Teste é carregada. Ao criar um objeto do tipo Teste, o primeiro bloco normal é executado, exibindo então um “b”. Ai cria-se mais um objeto, novamente o bloco normal é executado, só que dessa vez, é chamado o método teste do objeto, exibindo então “c”, que por sua vez poderia estar dentro de um bloco. Os blocos são usados principalmente para separar o escopo de variáveis. Quando você declara uma variável dentro do bloco de um for por exemplo, aquela variável só existe naquele escopo. Mais um exemplo:
[code]public static void teste() {
{
int x = 10;
System.out.println( x );
}
{
int x = 12;
System.out.println( x );
}
System.out.println( "x" );
}[/code]
[]´s