IBM run time has underlying low level logic to designate a page/entry uncacheable in the event of any system exception. Even if the system exceptions are caught from custom code. It still ends up not caching the entry.
If you have any extra parameters in the URL that could cause any exceptions. The output of the servlet is not cached.
Do make sure before passing parameters to OOB commands beans. Validate the ID's that will help for some cases.