When something goes wrong at run time, like dividing by zero or parsing "abc" as a number, an unhandled exception stops the whole program. try/catch lets you handle that error and continue, and finally runs clean-up whether or not an error happened. Use it around code that can fail for reasons outside your control, like user input or files. Do not use it to cover up bugs such as a bad array index; fix the logic instead.