I don't think it's possible in today's Swift, but with language evolution a limited form could be possible in the future even without sum types if errorUnion(E1, E2)
from the proposal was turned into a proper type expression.
It was discussed around here: [Pitch] Typed throws in the Concurrency module - #28 by Douglas_Gregor