case class CaughtException[+V <: Var[V]](pc: PC, exceptionType: Option[ObjectType], throwingStmts: IntTrieSet) extends Stmt[V] with Product with Serializable
A caught exception is essential to ensure that the "throw" is never optimized away, even if the exception object as such is not used.
- Source
- Stmt.scala
- Note
CaughtException
expression are only created by TACAI!
- Alphabetic
- By Inheritance
- CaughtException
- Serializable
- Product
- Equals
- Stmt
- ASTNode
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new CaughtException(pc: PC, exceptionType: Option[ObjectType], throwingStmts: IntTrieSet)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def asArrayStore: ArrayStore[V]
- Definition Classes
- Stmt
- def asAssignment: Assignment[V]
- Definition Classes
- Stmt
- def asAssignmentLike: AssignmentLikeStmt[V]
- Definition Classes
- Stmt
- final def asCaughtException: CaughtException[V]
- Definition Classes
- CaughtException → Stmt
- def asCheckcast: Checkcast[V]
- Definition Classes
- Stmt
- def asExprStmt: ExprStmt[V]
- Definition Classes
- Stmt
- def asFieldWriteAccessStmt: FieldWriteAccessStmt[V]
- Definition Classes
- Stmt
- def asGoto: Goto
- Definition Classes
- Stmt
- def asIf: If[V]
- Definition Classes
- Stmt
- def asInstanceMethodCall: InstanceMethodCall[V]
- Definition Classes
- Stmt
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def asInvokedynamicMethodCall: InvokedynamicMethodCall[V]
- Definition Classes
- Stmt
- def asJSR: JSR
- Definition Classes
- Stmt
- def asMethodCall: MethodCall[V]
- Definition Classes
- Stmt
- def asMonitorEnter: MonitorEnter[V]
- Definition Classes
- Stmt
- def asMonitorExit: MonitorExit[V]
- Definition Classes
- Stmt
- def asNonVirtualMethodCall: NonVirtualMethodCall[V]
- Definition Classes
- Stmt
- def asNop: Nop
- Definition Classes
- Stmt
- def asPutField: PutField[V]
- Definition Classes
- Stmt
- def asPutStatic: PutStatic[V]
- Definition Classes
- Stmt
- def asRet: Ret
- Definition Classes
- Stmt
- def asReturn: Return
- Definition Classes
- Stmt
- def asReturnValue: ReturnValue[V]
- Definition Classes
- Stmt
- def asStaticMethodCall: StaticMethodCall[V]
- Definition Classes
- Stmt
- def asSwitch: Switch[V]
- Definition Classes
- Stmt
- def asSynchronizationStmt: SynchronizationStmt[V]
- Definition Classes
- Stmt
- def asThrow: Throw[V]
- Definition Classes
- Stmt
- def asVirtualMethodCall: VirtualMethodCall[V]
- Definition Classes
- Stmt
- final def astID: Int
Each type of node is assigned a different
id
to make it easily possible to do a switch over all nodes.Each type of node is assigned a different
id
to make it easily possible to do a switch over all nodes.- Definition Classes
- CaughtException → ASTNode
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def exceptionLocations: Iterator[String]
Textual description of the sources of the caught exceptions.
Textual description of the sources of the caught exceptions. If the exception was thrown by the JVM due to the evaluation of an expression (e.g., NullPointerException, DivisionByZero,..) then the string will be
exception@<INDEX>
where index identifies the failing expression. In case an exception is caught that was thrown usingATHROW
the local variable/parameter which stores the local variable is returned. - val exceptionType: Option[ObjectType]
- final def forallSubExpressions[W >: V <: Var[W]](p: (Expr[W]) => Boolean): Boolean
- Definition Classes
- CaughtException → Stmt
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def isArrayStore: Boolean
- Definition Classes
- Stmt
- def isAssignment: Boolean
- Definition Classes
- Stmt
- final def isCaughtException: Boolean
- Definition Classes
- CaughtException → Stmt
- def isCheckcast: Boolean
- Definition Classes
- Stmt
- def isExprStmt: Boolean
- Definition Classes
- Stmt
- def isIf: Boolean
- Definition Classes
- Stmt
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isMethodCall: Boolean
- Definition Classes
- Stmt
- def isMonitorEnter: Boolean
- Definition Classes
- Stmt
- def isMonitorExit: Boolean
- Definition Classes
- Stmt
- def isNonVirtualMethodCall: Boolean
- Definition Classes
- Stmt
- def isNop: Boolean
- Definition Classes
- Stmt
- def isPutField: Boolean
- Definition Classes
- Stmt
- def isPutStatic: Boolean
- Definition Classes
- Stmt
- def isReturnValue: Boolean
- Definition Classes
- Stmt
- final def isSideEffectFree: Boolean
true
if the statement/expression is GUARANTEED to have no externally observable effect if it is not executed.true
if the statement/expression is GUARANTEED to have no externally observable effect if it is not executed. Sideeffect free instructions can be removed if the result of the evaluation of the expression/statement is not used. For those instructions, which may result in an exception, it has to be guaranteed that the exception is NEVER thrown. For example, a div instruction is sideeffect free if it is (statically) known that the divisor is always not equal to zero; otherwise, even if the result value is not used, the expression is not (potentially) side effect free. An array load is only side effect free if the array reference is non-null and if the index is valid.- returns
true
if the expression is GUARENTEED to have no side effect other than wasting some CPU cycles if it is not executed.
- Definition Classes
- CaughtException → ASTNode
- Note
Deeply nested expressions are not supported; i.e. an expression's sub-expressions have to be Var or Const expressions. Generally, a statements expressions have to to simple expressions too - except of the Assignment statement; in the latter case the right-expression can have references to simple expressions. Hence, in case of Assignment statements the side-effect freenes is determined by the referenced expression; in all other cases the side-effect freeness is determined directly by the statement/expression.
- def isStaticMethodCall: Boolean
- Definition Classes
- Stmt
- def isThrow: Boolean
- Definition Classes
- Stmt
- def isVirtualMethodCall: Boolean
- Definition Classes
- Stmt
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- def origins: IntTrieSet
The origin(s) of the caught exception(s).
The origin(s) of the caught exception(s). An origin identifies the instruction that ex- or implicitly created the exception:
- If the exception is created locally (
new XXXException
) and also caught within the same method, then the origin identifies a normal variable definition site. - If the exception is a parameter the parameter's origin (-1,... -n) is returned.
- If the exception was raised due to a sideeffect of evaluating an expression, then the origin is smaller or equal to org.opalj.ai.ImmediateVMExceptionsOriginOffset and can be tranformed to the index of the responsible instruction using org.opalj.ai#pcOfImmediateVMException.
- If the exception is created locally (
- val pc: PC
The program counter of the original underyling bytecode instruction.
The program counter of the original underyling bytecode instruction.
This
pc
is independent of the (implicit)index
of the statement in the generated statements array! This pc is, e.g., useful for getting line number information.- Definition Classes
- CaughtException → Stmt
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def toCanonicalForm(implicit ev: <:<[V, DUVar[ValueInformation]]): Stmt[DUVar[ValueInformation]]
See org.opalj.value.ValueInformation.toCanonicalForm for detail.
See org.opalj.value.ValueInformation.toCanonicalForm for detail.
- Definition Classes
- CaughtException → Stmt → ASTNode
- def toString(): String
- Definition Classes
- CaughtException → AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated