refactor
add support for Throw list: When(X).Throw(e1,e2,...)