# Error Handling

Error handling (a.k.a. exception handling, condition handling) proactively tackles problematic inputs or conditions that would either stop the software from completing its intended purpose or would result in invalid output. It expects the unexpected. In conjunction with logging, catching and routing errors hardens code so that problems are identified but do not prevent software from otherwise performing its intended purpose.

## Resources

### General Documentation
* Hadley Wickham chapter (comprehensive): [Debugging, condition handling, and defensive programming](http://adv-r.had.co.nz/Exceptions-Debugging.html) 

### Language Resources

#### Python
* [Tutorial](https://docs.python.org/3/tutorial/errors.html)

#### R
* [Tutorial](https://cran.r-project.org/web/packages/tryCatchLog/vignettes/tryCatchLog-intro.html)

