Exceptions usually follow the AbcDefException nomenclature. Some examples are - NullPointerException, RuntimeException, etc. This allows the person reading/viewing the code understand that the entity being dealt with is an Exception rather than having to rely on the context.
Try(/* do something */) match {
...
case Failure(e: Foo) => ...
}
Try(/* do something */) match {
...
case Failure(e: FooException) => ...
}