I've never found a way to recover from convergence test failure, while NDSolve[] is still operating. They (always?) indicate a failure in the library routine doing the integration, which signals the library routine cannot proceed.
On the other hand, when I get an NDSolve::ndcf error, NDSolve[] returns a partial solution, thus saving the results obtained before the convergence failure. This seems to be what you want. Do you not get the partial solution?
When the failure is at the first step, no data is computed, and the result is defined only at the initial condition.
In the case of the shooting method for BVPs, then in the shooting phase, if there is a failure in a test IVP, shooting is abandoned, NDSolve[] fails, and the input code is returned. There really are not partial results that can be returned in this case. What I do is to program my own shooting method that reacts to failures of different shots at initial conditions in a more robust way, which might vary with the system being solved.
.