That will work, although if you have this catch all rule, then you are usually going to have a more specific error message.
However, is the real issue not that you have added an error listener to your parser, but not to your lexer? You need to call removeErrorListeners(), then addErrorListener(myListener) on the lexer. Here is a code excerpt:
// Our listener listens for syntax and lexer errors and records them so that
// they can be recorded and listed once the compile is stopped
//
final VicaraErrorListener errListener = new VicaraErrorListener();
...
// The lexer instance, connected to the input stream
//
final VicaraLexer lexer = new VicaraLexer(input);
// Add the error listener to the lexer (this raises the errors for the lexer)
//
lexer.removeErrorListeners();
lexer.addErrorListener(errListener);
// Create the token stream for the parser to pull from
//
final CommonTokenStream tokens = new CommonTokenStream(lexer);
// And now we instantiate a parser, giving it the token stream that is ready
// to parse
//
final VicaraParser parser = new VicaraParser(tokens);
// Install our Error Strategy, as it is this that will raise actual errors for us in the Vicara messaging system
//
final VicaraErrorStrategy es = new VicaraErrorStrategy();
...
parser.setErrorHandler(es);
// Final step is to add the error message listener, which does not raise errors, it just detects
// that we somehow did not intercept an error that we should have done and records it as a bug.
//
parser.removeErrorListeners();
parser.addErrorListener(errListener);