Rust's philosophy of panic recovering
Rust book says that when the program panics there will be no ways to recover and suggests a preference to use Result as the return value instead of panicking. Although the std library provides catch_unwind to allow the program to continue executing when panicking, the document mentions the same that this method shouldn't be used for a try/catch like pattern.
Go also has the idea of panic but it has a convenient recover method to recover from panic. One useful case for recover I can think of is that if you are writing a web server framework where you let users pass custom handler functions, you can recover any panics from the custom handlers in the framework so that the server program won't exit because of it.
Should I use catch_unwind for this purpose in Rust? Or does Rust has a better alternative or a different philosophy for such requirements?