About the only other thing you can do is emulate VB.NET's exception filters:
try {
DoSomething();
} catch (Exception e) {
if (!ex is CustomException && !ex is AnotherCustomException) {
throw;
}
// handle
}
Sometimes this is better, sometimes not. I'd mainly use it if there was some common logic I wanted in the handler, but the exceptions don't share a base type.