Description
When a callable declares the same exception type multiple times in a throws clause, it is represented by CodeQL as a single Exception with multiple getLocation() results. This is rather counterintuitive and confusing.
Expected would be that each exception type specified in the throws clause has its own Exception element with a single location, even if the same exception type occurs multiple times.
Example
Java code:
public void doSomething() throws IllegalArgumentException, IllegalArgumentException {
}
CodeQL query:
import java
from Exception e
where
e.fromSource()
and count(e.getLocation()) > 1
select e, e.getLocation()
Query Console link