Instrução de retorno com problema - "missing return statement"

To começando aprender Java agora e não consigo entender porque a classe abaixo está dando a mensagem, conforme ilustrada:
Alguém pode me ajudar?

package utilitarios;

import java.util.Date;

public class Comparador extends Data {

public String ComparaHora(String hora){ -------> missing return statement ( está dando essa mensagem )
try{
String hora1 = hora;
String hora2 = “00:00:00”;
String hora3 = “12:00:00”;
String hora4 = “18:00:00”;

     Date d1 = horaformatada.parse(hora1);
     Date d2 = horaformatada.parse(hora2);
     Date d3 = horaformatada.parse(hora3);
     Date d4 = horaformatada.parse(hora4);
 
     
     // DE 00:00:00H às 12:00:00H
     if(d1.getTime() >= d2.getTime() && d1.getTime()<=d3.getTime()){  
       
         return "BOM DIA!";
        
     }
     else{ // de 12:00:00 às 18:00:00h
         if(d1.getTime() > d3.getTime() && d1.getTime()<= d4.getTime())
         
             return "BOA TARDE!";
         else
             // de 18:00:01 às 23:59:59
           
             return "BOA NOITE!";
     }  
  }  
  catch(Exception e){  
     System.out.println(e);  
      
  }  

}

}

Você só tem retorno do método dentro do try; caso alguma exceção for lançada seu método não estará retornando nada, então está errado. Uma boa prática é quando se tem um método com retorno. Sempre retorne na última linha. Se você colocar o seguinte código vai funcionar:

package utilitarios;

import java.util.Date;

public class Comparador extends Data {



public String ComparaHora(String hora){ -------> missing return statement ( está dando essa mensagem )
String mensagemRetorno = "";
try{
String hora1 = hora;
String hora2 = "00:00:00";
String hora3 = "12:00:00";
String hora4 = "18:00:00";

Date d1 = horaformatada.parse(hora1);
Date d2 = horaformatada.parse(hora2);
Date d3 = horaformatada.parse(hora3);
Date d4 = horaformatada.parse(hora4);


// DE 00:00:00H às 12:00:00H
if(d1.getTime() >= d2.getTime() && d1.getTime()<=d3.getTime()){

mensagemRetorno = "BOM DIA!";

}
else{ // de 12:00:00 às 18:00:00h
if(d1.getTime() > d3.getTime() && d1.getTime()<= d4.getTime())

mensagemRetorno  =  "BOA TARDE!";
else
// de 18:00:01 às 23:59:59

mensagemRetorno = "BOA NOITE!";
}
}
catch(Exception e){
System.out.println(e);

}
return mensagemRetorno;
}

} 

Muito obrigada pela dica…mas agora sem querer abusar da sua paciência, deu outro erro: como estou trabalhando com herança e usando, portanto “extends” dá a seguinte msg “Ponto de interrupção da classe” nessa parte

"public class Comparador extends Data { "

A classe Data é a que segue:

package utilitarios;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Data {
public String mes, dia, ano, dia_semana,hora;
public SimpleDateFormat horaformatada = new SimpleDateFormat(“HH:mm:ss”);

public void le_hora()
{
    Date horaAtual = new Date();
    hora = horaformatada.format(horaAtual);
        
    
}

public void le_data()
{
    Date data = new Date();
    dia = ""+data.getDate();
    ano = ""+(1900+data.getYear());
    
    switch (data.getMonth())
    {
        case 0: mes = "Janeiro";break;
        case 1: mes = "Fevereiro";break;
        case 2: mes = "Março";break;
        case 3: mes = "Abril";break;
        case 4: mes = "Maio";break;
        case 5: mes = "Junho";break;
        case 6: mes = "Julho";break;
        case 7: mes = "Agosto";break;
        case 8: mes = "Setembro";break;
        case 9: mes = "Outubro";break;
        case 10: mes = "Novembro";break;
        case 11: mes = "Dezembro";break;
    }
    
    switch (data.getDay())
    {
        case 0: dia_semana = "Domingo";break;
        case 1: dia_semana = "Segunda-Feira";break;
        case 2: dia_semana = "Terça-Feira";break;
        case 3: dia_semana = "Quarta-Feira";break;
        case 4: dia_semana = "Quinta-Feira";break;
        case 5: dia_semana = "Sexta-Feira";break;
        case 6: dia_semana = "Sábado";break;
    }
    
}

}

dá mais essa mensagem de erro:

class Comparador is public, should be declared in file named Comparador.java

Só que não entendo pq ele está mandando eu declarar como publica, se já está descrito “public class Comparador extends Data”

Por favor, não use textos com LETRAS MAIÚSCULAS nos títulos de seus tópicos.