el problema está en que tu no "atrapas" la excepción, con lo cual tiene que ser delphi quien lo haga, para ello prueba lo siguiente
Código:
procedure TfrmSolicitud.edFnacExit(Sender: TObject);
var
Hoy : TDateTime;
Year, Month, Day: Word;
begin
try
begin
Hoy := strtodate(edFnac.text); // cargo Hoy con la cadena del MaskEdit
DecodeDate(Hoy, Year, Month, Day); // intento la decodificación
Editboxsiguiente.setfocus; // si la fecha es correcta y no ocurre error pasa siguiente control.
end;
except
// Si ocurre un error :
begin
edFnac.setfocus; // escribir nuevamente la fecha
raise exception.create('Fecha erronea....'); // mensaje de error al usuario
end;
end;