When implementing long running processes, it's possible that certain code paths will result in a panic. This is usually common for things uninitialized maps and pointers, as well as division by zero problems in the case of poorly validated user input.
Having a program crash completely in these cases is frequently much worse than the panic itself, and so it can be helpful to catch and handle panics.