Skip to main content
added 772 characters in body
Source Link
Komi Golov
  • 3.2k
  • 19
  • 29

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.

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;
    }
}

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.

Source Link
Komi Golov
  • 3.2k
  • 19
  • 29

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;
    }
}