no `catch (e: MyException if e.foo = 25) { .. }`??
# announcements
v
no
catch (e: MyException if e.foo = 25) { .. }
??
r
Nope. But
Copy code
catch (e: MyException) {
   if (e.foo == 25) {
   ...
   }
}
works fine.
v
🙂
r
...except you'll probably need to rethrow in the else block to imitate your example.
v
Copy code
try {
//    ...
} catch (e: MyException) {
    if (e.code == 25) {
        // do specific stuff
    } else {
        // do common stuff
    }

} catch (e: Exception) {
    // do common stuff
}
so I have to duplicate "do common stuff"
if C#/F# there are guards
like this:
Copy code
try 
    ...
with 
| :? Exn1 as e when e.bar = 23 -> ...
| FooException(25) -> ...
| _ -> ...
r
That's not really possible in kotlin, unfortunately. If you're already catching
Exception
though, you can do this instead:
Copy code
try {
//    ...
} catch (e: Exception) {
    if (e is MyException && e.code == 25) {
        // do specific stuff
    } else {
        // do common stuff
    }
}
v
ah, this looks better
thanks
r
No problem
Oh and you can of course also use a
when
statement instead if you have more cases to check.