-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Expand file tree
/
Copy pathException.qll
More file actions
34 lines (27 loc) · 1.08 KB
/
Exception.qll
File metadata and controls
34 lines (27 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* Provides classes and predicates for working with Java exceptions.
*/
overlay[local?]
module;
import Element
import Type
/**
* An Exception represents an element listed in the `throws` clause
* of a method or constructor.
*
* For example, `E` is an exception thrown by method `m` in
* `void m() throws E;`, whereas `T` is an exception _type_ in
* `class T extends Exception { }`.
*/
class Exception extends Element, @exception {
/** Gets the type of this exception. */
RefType getType() { exceptions(this, result, _) }
/** Gets the callable whose `throws` clause contains this exception. */
Callable getCallable() { exceptions(this, _, result) }
/** Gets the name of this exception, that is, the name of its type. */
override string getName() { result = this.getType().getName() }
/** Holds if this exception has the specified `name`. */
override predicate hasName(string name) { this.getType().hasName(name) }
override string toString() { result = pragma[only_bind_out](this.getType()).toString() }
override string getAPrimaryQlClass() { result = "Exception" }
}