Software Design/Catch the most specific type of exception

Examples edit

try {
  // some logic
} catch (e: IOException) {
  // do something - retry the operation, notify the user, etc.
}

Rather than catch (e: Exception) { ... } or Throwable.

Why edit

Code robustness: less likely that bugs in the code wrapped with exception handling would be processed as if they were expected exceptional conditions (such as a network I/O error).

Why not edit

Duplication of logic between handlers of different specific types of exceptions which leads to change amplification, higher probability of inserting bugs in the exception handling logic itself (rather than the logic being wrapped with exception handling), etc. Eliminating this duplication (e. g. via extracting a function) has its own drawbacks.