Yes, of course you can have multiple catch blocks in C#. As of C#6 you now have exception filters (VB.NET has had these a long time). See the section "Statement-level features" here: [
^].
I strongly suggest you study these Exception handling guidelines from MS: [
^].
F-ES Sitecore showed you a good example here, but there's one "feature" of that example I think is not good practice: having a "generic catch-all" that is going to "swallow" any Exception type you did not catch.
imho, good practice demands that you
at least log an error that you "swallow." And, imho, best practice is to "never swallow," but re-throw if you must use a "catch-all."