I'm not a fan of the `TrySomething` with out parameter pattern, so I would sooner do the following:

    while (true) {
        try {
            possiblyFailingOperation();
            break;
        }
        catch (Exception e) {
            reportError();
            if (abortRequested())
                throw;
        }
    }

A `TrySomething` function makes sense when there's several places that call the same exception-throwing function and they all want to immediately catch and handle a single kind of exception said function may throw.  For example, `TryParse` often makes sense as parsing may be common and may have only one failure state (no parse).  It makes sense to do

    if (!TryParse(x, out i))
        i = default_value;

When there's only one function that calls the `TrySomething` function, the added benefit is significantly less; we end up obscuring what exception is thrown and losing the ability to rethrow if necessary.

If this is all insignificant, a try function may be worthwhile; however, I'd use it in reaction to a common pattern, not in anticipation of one.