I have a voter that I use to check if the current user can access an object. The access can be refused for several reasons, and I would like to know which in the Controller. However, the voter can only return a boolean, same for isGranted() in the Controller, so I'm not sure by which channel I can pass the extra information I want. Throwing an exception wouldn't do, as there may be other voters that haven't been called yet.
The closer thing I can think of are flash messages, which can be used to pass information outside of function arguments and return values, but it feels like hack to use them in this situation.