C#: Improve CFG for exception handlers

Use generic CFG splitting to add a new type of split for exception handlers,
`ExceptionHandlerSplit`, which tags eachs node belonging to a `catch` clause
with the type of exception being caught. This allows for a more accurate CFG
for `try-catch` statements, where exception filters are handled properly.
This commit is contained in:
Tom Hvitved
2018-08-15 16:48:12 +02:00
parent a705b3afa5
commit 91ed111735
10 changed files with 727 additions and 357 deletions

View File

@@ -971,6 +971,8 @@ class TryStmt extends Stmt, @try_stmt {
* general `catch` clause (`GeneralCatchClause`).
*/
class CatchClause extends Stmt, @catch {
/** Gets the `try` statement that this `catch` clause belongs to. */
TryStmt getTryStmt() { result.getACatchClause() = this }
/** Gets the block of this `catch` clause. */
BlockStmt getBlock() { result.getParent() = this }
@@ -1007,6 +1009,15 @@ class CatchClause extends Stmt, @catch {
/** Holds if this `catch` clause has a filter. */
predicate hasFilterClause() { exists(getFilterClause()) }
/** Holds if this is the last `catch` clause in the `try` statement that it belongs to. */
predicate isLast() {
exists(TryStmt ts, int last |
ts = this.getTryStmt() and
last = max(int i | exists(ts.getCatchClause(i))) and
this = ts.getCatchClause(last)
)
}
}
/**

View File

@@ -101,7 +101,7 @@ class Completion extends TCompletion {
or
not isNullnessConstant(cfe, _) and
this = TNullnessCompletion(_)
else if mustHaveMatchingCompletion(_, cfe) then
else if mustHaveMatchingCompletion(cfe) then
exists(boolean value |
isMatchingConstant(cfe, value) |
this = TMatchingCompletion(value)
@@ -314,6 +314,11 @@ private predicate inBooleanContext(Expr e, boolean isBooleanCompletionForParent)
isBooleanCompletionForParent = false
)
or
exists(SpecificCatchClause scc |
scc.getFilterClause() = e |
isBooleanCompletionForParent = false
)
or
exists(LogicalNotExpr lne |
lne.getAnOperand() = e |
inBooleanContext(lne, _) and
@@ -396,14 +401,20 @@ private predicate inNullnessContext(Expr e, boolean isNullnessCompletionForParen
)
}
/**
* Holds if a normal completion of `e` must be a matching completion. Thats is,
* whether `e` determines a match in a `switch` statement.
*/
private predicate mustHaveMatchingCompletion(SwitchStmt ss, Expr e) {
e = ss.getAConstCase().getExpr()
private predicate mustHaveMatchingCompletion(SwitchStmt ss, ControlFlowElement cfe) {
cfe = ss.getAConstCase().getExpr()
or
e = ss.getATypeCase().getTypeAccess() // use type access to represent the type test
cfe = ss.getATypeCase().getTypeAccess() // use type access to represent the type test
}
/**
* Holds if a normal completion of `cfe` must be a matching completion. Thats is,
* whether `cfe` determines a match in a `switch` statement or `catch` clause.
*/
private predicate mustHaveMatchingCompletion(ControlFlowElement cfe) {
mustHaveMatchingCompletion(_, cfe)
or
cfe instanceof SpecificCatchClause
}
/**

View File

@@ -352,8 +352,8 @@ class ControlFlowElementNode extends ControlFlowNode, TNode {
}
class Split = SplitImpl;
class FinallySplit = FinallySplitting::FinallySplitImpl;
class ExceptionHandlerSplit = ExceptionHandlerSplitting::ExceptionHandlerSplitImpl;
/**
* DEPRECATED: Use `ControlFlowElementNode` instead.
@@ -882,11 +882,11 @@ module Internal {
not this instanceof TypeCase and
not this instanceof LoopStmt and
not this instanceof TryStmt and
not this instanceof SpecificCatchClause and
not this instanceof JumpStmt
}
override ControlFlowElement getChildElement(int i) {
not this instanceof CatchClause and
not this instanceof FixedStmt and
not this instanceof UsingStmt and
result = this.getChild(i)
@@ -895,13 +895,6 @@ module Internal {
i = 0 and result = gcc.getBlock()
)
or
this = any(SpecificCatchClause scc |
exists(int j |
j = rank[i + 1](int k | exists(getSpecificCatchClauseChild(scc, k)) | k) |
result = getSpecificCatchClauseChild(scc, j)
)
)
or
this = any(FixedStmt fs |
result = fs.getVariableDeclExpr(i)
or
@@ -926,14 +919,6 @@ module Internal {
}
}
private ControlFlowElement getSpecificCatchClauseChild(SpecificCatchClause scc, int i) {
i = 0 and result = scc.getVariableDeclExpr()
or
i = 1 and result = scc.getFilterClause()
or
i = 2 and result = scc.getBlock()
}
/**
* An assignment operation that has an expanded version. We use the expanded
* version in the control flow graph in order to get better data flow / taint
@@ -1085,6 +1070,7 @@ module Internal {
this instanceof ConstCase or
this instanceof TypeCase or
this instanceof TryStmt or
this instanceof SpecificCatchClause or
(this instanceof LoopStmt and not this instanceof ForeachStmt) or
this instanceof LogicalNotExpr or
this instanceof LogicalAndExpr or
@@ -1394,12 +1380,40 @@ module Internal {
result = lastTryStmtFinally(ts, c) and
not c instanceof NormalCompletion
or
// If there is no `finally` block, last elements are from the body or
// any of the `catch` clauses
// If there is no `finally` block, last elements are from the body, from
// the blocks of one of the `catch` clauses, or from the last `catch` clause
not ts.hasFinally() and
result = getBlockOrCatchFinallyPred(ts, c)
)
or
cfe = any(SpecificCatchClause scc |
// Last element of `catch` block
result = lastCatchClauseBlock(cfe, c)
or
(
if scc.isLast() then (
// Last `catch` clause inherits throw completions from the `try` block,
// when the clause does not match
throwMayBeUncaught(scc, c) and
(
// Incompatible exception type: clause itself
result = scc
or
// Incompatible filter
result = lastSpecificCatchClauseFilterClause(scc, _)
)
) else (
// Incompatible exception type: clause itself
result = scc and
c = any(MatchingCompletion mc | not mc.isMatch())
or
// Incompatible filter
result = lastSpecificCatchClauseFilterClause(scc, c) and
c instanceof FalseCompletion
)
)
)
or
cfe = any(JumpStmt js |
// Post-order: element itself
result = js and
@@ -1632,8 +1646,18 @@ module Internal {
}
pragma [nomagic]
private ControlFlowElement lastTryStmtCatchClause(TryStmt ts, Completion c) {
result = last(ts.getACatchClause(), c)
ControlFlowElement lastTryStmtCatchClause(TryStmt ts, int i, Completion c) {
result = last(ts.getCatchClause(i), c)
}
pragma [nomagic]
private ControlFlowElement lastSpecificCatchClauseFilterClause(SpecificCatchClause scc, Completion c) {
result = last(scc.getFilterClause(), c)
}
pragma [nomagic]
private ControlFlowElement lastCatchClauseBlock(CatchClause cc, Completion c) {
result = last(cc.getBlock(), c)
}
pragma [nomagic]
@@ -1651,36 +1675,48 @@ module Internal {
result = last(fs.getInitializer(i), c)
}
/**
* Gets a last element from the `try` block of this `try` statement that may
* finish with completion `c`, such that control may be transferred to the
* `finally` block (if it exists).
*/
private ControlFlowElement getBlockFinallyPred(TryStmt ts, Completion c) {
result = lastTryStmtBlock(ts, c)
and
(
// Any non-throw completion will always continue to the `finally` block
not c instanceof ThrowCompletion
or
// A throw completion will only continue to the `finally` block if it is
// definitely not handled by a `catch` clause
exists(ExceptionClass ec |
ec = c.(ThrowCompletion).getExceptionClass() and
not ts.definitelyHandles(ec, _)
)
)
}
/**
* Gets a last element from a `try` or `catch` block of this `try` statement
* that may finish with completion `c`, such that control may be transferred
* to the `finally` block (if it exists).
*/
pragma [noinline]
pragma [nomagic]
private ControlFlowElement getBlockOrCatchFinallyPred(TryStmt ts, Completion c) {
result = getBlockFinallyPred(ts, c) or
result = lastTryStmtCatchClause(ts, c)
result = lastTryStmtBlock(ts, c) and
(
// Any non-throw completion from the `try` block will always continue directly
// to the `finally` block
not c instanceof ThrowCompletion
or
// Any completion from the `try` block will continue to the `finally` block
// when there are no catch clauses
not exists(ts.getACatchClause())
)
or
// Last element from any of the `catch` clause blocks continues to the `finally` block
result = lastCatchClauseBlock(ts.getACatchClause(), c)
or
// Last element of last `catch` clause continues to the `finally` block
exists(int last |
ts.getCatchClause(last).isLast() |
result = lastTryStmtCatchClause(ts, last, c)
)
}
/**
* Holds if the `try` block that catch clause `scc` belongs to may throw an
* exception of type `c`, where no `catch` clause is guaranteed to catch it.
* The catch clause `last` is the last catch clause in the `try` statement
* that it belongs to.
*/
pragma [nomagic]
private predicate throwMayBeUncaught(SpecificCatchClause last, ThrowCompletion c) {
exists(TryStmt ts |
ts = last.getTryStmt() and
exists(lastTryStmtBlock(ts, c)) and
not ts.definitelyHandles(c.getExceptionClass(), _) and
last.isLast()
)
}
/**
@@ -2197,16 +2233,83 @@ module Internal {
result = first(ts.getBlock()) and
c instanceof SimpleCompletion
or
// Flow from last element of body to first element of a relevant `catch` clause
exists(ExceptionClass ec |
cfe = lastTryStmtBlock(ts, c) and
ec = c.(ThrowCompletion).getExceptionClass() and
result = first(ts.getAnExceptionHandler(ec))
// Flow from last element of body to first `catch` clause
exists(getAThrownException(ts, cfe, c)) and
result = first(ts.getCatchClause(0))
or
exists(SpecificCatchClause scc, int i |
scc = ts.getCatchClause(i) |
cfe = scc and
scc = lastTryStmtCatchClause(ts, i, c) and
(
// Flow from one `catch` clause to the next
result = first(ts.getCatchClause(i + 1)) and
c = any(MatchingCompletion mc | not mc.isMatch())
or
// Flow from last `catch` clause to first element of `finally` block
ts.getCatchClause(i).isLast() and
result = first(ts.getFinally()) and
c instanceof ThrowCompletion // inherited from `try` block
)
or
cfe = lastTryStmtCatchClause(ts, i, c) and
cfe = lastSpecificCatchClauseFilterClause(scc, _) and
(
// Flow from last element of `catch` clause filter to next `catch` clause
result = first(ts.getCatchClause(i + 1)) and
c instanceof FalseCompletion
or
// Flow from last element of `catch` clause filter, of last clause, to first
// element of `finally` block
ts.getCatchClause(i).isLast() and
result = first(ts.getFinally()) and
c instanceof ThrowCompletion // inherited from `try` block
)
or
// Flow from last element of a `catch` block to first element of `finally` block
cfe = lastCatchClauseBlock(scc, c) and
result = first(ts.getFinally())
)
or
// Flow into the `finally` block
cfe = getBlockOrCatchFinallyPred(ts, c) and
result = first(ts.getFinally())
// Flow from last element of `try` block to first element of `finally` block
cfe = lastTryStmtBlock(ts, c) and
result = first(ts.getFinally()) and
(
c instanceof ThrowCompletion
implies
not exists(ts.getACatchClause())
)
)
or
exists(SpecificCatchClause scc |
// Flow from catch clause to variable declaration/filter clause/block
cfe = scc and
c.(MatchingCompletion).isMatch() and
exists(ControlFlowElement next |
result = first(next) |
if exists(scc.getVariableDeclExpr()) then
next = scc.getVariableDeclExpr()
else if exists(scc.getFilterClause()) then
next = scc.getFilterClause()
else
next = scc.getBlock()
)
or
// Flow from variable declaration to filter clause/block
cfe = last(scc.getVariableDeclExpr(), c) and
c instanceof SimpleCompletion and
exists(ControlFlowElement next |
result = first(next) |
if exists(scc.getFilterClause()) then
next = scc.getFilterClause()
else
next = scc.getBlock()
)
or
// Flow from filter to block
cfe = last(scc.getFilterClause(), c) and
c instanceof TrueCompletion and
result = first(scc.getBlock())
)
or
// Post-order: flow from last element of child to statement itself
@@ -2231,6 +2334,15 @@ module Internal {
)
}
/**
* Gets an exception type that is thrown by `cfe` in the block of `try` statement
* `ts`. Throw completion `c` matches the exception type.
*/
ExceptionClass getAThrownException(TryStmt ts, ControlFlowElement cfe, ThrowCompletion c) {
cfe = lastTryStmtBlock(ts, c) and
result = c.getExceptionClass()
}
/**
* Gets the condition of `for` loop `fs` if it exists, otherwise the body.
*/
@@ -2274,7 +2386,7 @@ module Internal {
class SplitImpl extends TSplit {
/** Gets a textual representation of this split. */
string toString() { none() }
/**
* INTERNAL: Do not use.
*
@@ -2288,7 +2400,7 @@ module Internal {
this.hasSuccessor(pred, cfe, _)
)
}
/**
* INTERNAL: Do not use.
*
@@ -2299,7 +2411,7 @@ module Internal {
predicate hasEntry(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
none()
}
/**
* INTERNAL: Do not use.
*
@@ -2310,7 +2422,7 @@ module Internal {
predicate hasExit(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
none()
}
/**
* INTERNAL: Do not use.
*
@@ -2321,7 +2433,7 @@ module Internal {
predicate hasExit(ControlFlowElement pred, Completion c) {
none()
}
/**
* INTERNAL: Do not use.
*
@@ -2534,12 +2646,173 @@ module Internal {
}
}
module ExceptionHandlerSplitting {
private newtype TMatch = TAlways() or TMaybe() or TNever()
/**
* A split for elements belonging to a `catch` clause, which determines the type of
* exception to handle. For example, in
*
* ```
* try
* {
* if (M() > 0)
* throw new ArgumentException();
* else if (M() < 0)
* throw new ArithmeticException("negative");
* else
* return;
* }
* catch (ArgumentException e)
* {
* Log.Write("M() positive");
* }
* catch (ArithmeticException e) when (e.Message != null)
* {
* Log.Write($"M() {e.Message}");
* }
* ```
*
* all control flow nodes in
* ```
* catch (ArgumentException e)
* ```
* and
* ```
* catch (ArithmeticException e) when (e.Message != null)
* ```
* have two splits: one representing the `try` block throwing an `ArgumentException`,
* and one representing the `try` block throwing an `ArithmeticException`.
*/
class ExceptionHandlerSplitImpl extends Split, TExceptionHandlerSplit {
private ExceptionClass ec;
ExceptionHandlerSplitImpl() {
this = TExceptionHandlerSplit(ec)
}
override string toString() {
result = "exception: " + ec.toString()
}
override predicate hasEntry(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
// Entry into first catch clause
exists(TryStmt ts |
ec = getAThrownException(ts, pred, c) |
succ = succ(pred, c) and
succ = ts.getCatchClause(0).(SpecificCatchClause)
)
}
/**
* Holds if this split applies to catch clause `scc`. The parameter `match`
* indicates whether the catch clause `scc` may match the exception type of
* this split.
*/
private predicate appliesToCatchClause(SpecificCatchClause scc, TMatch match) {
exists(TryStmt ts |
ec = getAThrownException(ts, _, _) and
scc = ts.getACatchClause() |
if scc.getCaughtExceptionType() = ec.getABaseType*() then
match = TAlways()
else if scc.getCaughtExceptionType() = ec.getASubType+() then
match = TMaybe()
else
match = TNever()
)
}
/**
* Holds if this split applies to control flow element `pred`, where `pred`
* is a valid predecessor with completion `c`.
*/
private predicate appliesToPredecessor(ControlFlowElement pred, Completion c) {
this.appliesTo(pred) and
(exists(succ(pred, c)) or exists(succExit(pred, c))) and
(
pred instanceof SpecificCatchClause
implies
pred = any(SpecificCatchClause scc |
if c instanceof MatchingCompletion then
exists(TMatch match |
this.appliesToCatchClause(scc, match) |
c = any(MatchingCompletion mc |
if mc.isMatch() then
match != TNever()
else
match != TAlways()
)
)
else (
(scc.isLast() and c instanceof ThrowCompletion)
implies
exists(TMatch match |
this.appliesToCatchClause(scc, match) |
match != TAlways()
)
)
)
)
}
/**
* Holds if this split applies to `pred`, and `pred` may exit this split
* with throw completion `c`, because it belongs to the last `catch` clause
* in a `try` statement.
*/
private predicate hasLastExit(ControlFlowElement pred, ThrowCompletion c) {
this.appliesToPredecessor(pred, c) and
exists(TryStmt ts, SpecificCatchClause scc, int last |
pred = lastTryStmtCatchClause(ts, last, c) |
ts.getCatchClause(last) = scc and
scc.isLast() and
c.getExceptionClass() = ec
)
}
override predicate hasExit(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
this.appliesToPredecessor(pred, c) and
succ = succ(pred, c) and
(
// Exit out to `catch` clause block
succ = first(any(SpecificCatchClause scc).getBlock())
or
// Exit out to a general `catch` clause
succ instanceof GeneralCatchClause
or
// Exit out from last `catch` clause (no catch clauses match)
this.hasLastExit(pred, c)
)
}
override predicate hasExit(ControlFlowElement pred, Completion c) {
// Exit out from last `catch` clause (no catch clauses match)
this.hasLastExit(pred, c) and
exists(succExit(pred, c))
}
override predicate hasSuccessor(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
this.appliesToPredecessor(pred, c) and
succ = succ(pred, c) and
not succ = first(any(SpecificCatchClause scc).getBlock()) and
not succ instanceof GeneralCatchClause and
not exists(TryStmt ts, SpecificCatchClause scc, int last |
pred = lastTryStmtCatchClause(ts, last, c) |
ts.getCatchClause(last) = scc and
scc.isLast()
)
}
}
}
/**
* Gets an integer representing the kind of split `s`. The kind is used
* to make an arbitrary order on splits.
*/
private int getSplitKind(Split s) {
s = TFinallySplit(_) and result = 0
or
s = TExceptionHandlerSplit(_) and result = 1
}
/** Gets the rank of `split` among all the splits that apply to `cfe`. */
@@ -2757,6 +3030,8 @@ module Internal {
cached
newtype TSplit =
TFinallySplit(FinallySplitting::FinallySplitType type)
or
TExceptionHandlerSplit(ExceptionClass ec)
cached
newtype TSplits =

View File

@@ -79,8 +79,10 @@
| ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:30:10:30:11 | exit M5 | 6 |
| ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | 7 |
| ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 | 1 |
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:44:13:44:19 | return ...; | 3 |
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:48:13:48:19 | return ...; | 3 |
| ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | 1 |
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | 1 |
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | 2 |
| ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:13:48:19 | return ...; | 3 |
| ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:54:13:54:13 | access to parameter b | 4 |
| ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | 1 |
| ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:13:55:34 | throw ...; | 2 |
@@ -303,13 +305,20 @@
| cflow.cs:153:9:155:9 | {...} | cflow.cs:159:31:159:36 | "Try2" | 8 |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine | 1 |
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:186:13:186:40 | [finally: return] call to method WriteLine | 5 |
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:186:13:186:40 | [finally: exception(IOException)] call to method WriteLine | 9 |
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:186:13:186:40 | [finally: exception(Exception)] call to method WriteLine | 16 |
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:191:31:191:36 | "Try3" | 10 |
| cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | 1 |
| cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | 3 |
| cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:186:13:186:40 | [finally: exception(IOException)] call to method WriteLine | 8 |
| cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | 1 |
| cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:186:13:186:40 | [finally: exception(Exception)] call to method WriteLine | 15 |
| cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | 1 |
| cflow.cs:178:9:179:9 | {...} | cflow.cs:191:31:191:36 | "Try3" | 9 |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine | 1 |
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:203:13:203:40 | [finally: return] call to method WriteLine | 5 |
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:203:13:203:40 | [finally: exception(IOException)] call to method WriteLine | 9 |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:207:9:230:9 | while (...) ... | 16 |
| cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | 1 |
| cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | 7 |
| cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:203:13:203:40 | [finally: exception(IOException)] call to method WriteLine | 8 |
| cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | 6 |
| cflow.cs:199:9:200:9 | {...} | cflow.cs:207:9:230:9 | while (...) ... | 10 |
| cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:203:13:203:40 | [finally: exception(Exception)] call to method WriteLine | 4 |
| cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | cflow.cs:203:13:203:40 | [finally: exception(OutOfMemoryException)] call to method WriteLine | 4 |
| cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:207:16:207:20 | ... > ... | 3 |

View File

@@ -148,10 +148,15 @@
| post | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
| post | ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
| post | ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:43:9:45:9 | {...} |
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
| post | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
| post | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:43:9:45:9 | {...} |
| post | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
| post | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
@@ -619,13 +624,20 @@
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:153:9:155:9 | {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:159:13:159:37 | call to method WriteLine |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:160:13:160:19 | return ...; |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:9:165:9 | catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:166:9:176:9 | catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:177:9:179:9 | catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:178:9:179:9 | {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:191:13:191:37 | call to method WriteLine |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:192:13:192:19 | return ...; |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:9:197:9 | catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:198:9:200:9 | catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:199:9:200:9 | {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:207:16:207:16 | access to local variable i |
@@ -682,16 +694,25 @@
| post | cflow.cs:153:9:155:9 | {...} | cflow.cs:153:9:155:9 | {...} |
| post | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine |
| post | cflow.cs:160:13:160:19 | return ...; | cflow.cs:160:13:160:19 | return ...; |
| post | cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:9:165:9 | catch (...) {...} |
| post | cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} |
| post | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
| post | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| post | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| post | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:178:9:179:9 | {...} |
| post | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine |
| post | cflow.cs:192:13:192:19 | return ...; | cflow.cs:192:13:192:19 | return ...; |
| post | cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
| post | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
| post | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| post | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:199:9:200:9 | {...} | cflow.cs:199:9:200:9 | {...} |
| post | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| post | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:198:9:200:9 | catch (...) {...} |
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:199:9:200:9 | {...} |
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:207:16:207:16 | access to local variable i |
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:226:17:228:17 | [finally: continue] {...} |
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:226:17:228:17 | {...} |
@@ -1178,11 +1199,16 @@
| pre | ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:30:10:30:11 | enter M5 |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:43:9:45:9 | {...} |
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
| pre | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
| pre | ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
| pre | ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
| pre | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
| pre | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:43:9:45:9 | {...} |
| pre | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
@@ -1812,13 +1838,20 @@
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:153:9:155:9 | {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:159:13:159:37 | call to method WriteLine |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:160:13:160:19 | return ...; |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:9:165:9 | catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:166:9:176:9 | catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:177:9:179:9 | catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:178:9:179:9 | {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:191:13:191:37 | call to method WriteLine |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:9:197:9 | catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:198:9:200:9 | catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:199:9:200:9 | {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:207:16:207:16 | access to local variable i |
@@ -1875,13 +1908,20 @@
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:153:9:155:9 | {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:177:9:179:9 | catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:178:9:179:9 | {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:199:9:200:9 | {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:207:16:207:16 | access to local variable i |
@@ -1937,13 +1977,20 @@
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:153:9:155:9 | {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:159:13:159:37 | call to method WriteLine |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:160:13:160:19 | return ...; |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:9:165:9 | catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:166:9:176:9 | catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:178:9:179:9 | {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:191:13:191:37 | call to method WriteLine |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:199:9:200:9 | {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:207:16:207:16 | access to local variable i |
@@ -1996,170 +2043,147 @@
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:160:13:160:19 | return ...; | cflow.cs:160:13:160:19 | return ...; |
| pre | cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:9:165:9 | catch (...) {...} |
| pre | cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:191:13:191:37 | call to method WriteLine |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:207:16:207:16 | access to local variable i |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:208:9:230:9 | {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:212:21:212:27 | return ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:213:17:214:29 | if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:214:21:214:29 | continue; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:215:17:216:26 | if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:216:21:216:26 | break; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:219:13:229:13 | {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | throw ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:232:9:245:9 | try {...} ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:234:17:234:28 | access to property Length |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:234:33:234:33 | 0 |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:235:17:235:23 | return ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:236:13:237:49 | if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:236:17:236:28 | access to property Length |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:236:33:236:33 | 1 |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:237:17:237:49 | throw ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:240:9:245:9 | {...} |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | if (...) ... |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:178:9:179:9 | {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:191:13:191:37 | call to method WriteLine |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:199:9:200:9 | {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:207:16:207:16 | access to local variable i |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:208:9:230:9 | {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:212:21:212:27 | return ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:213:17:214:29 | if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:214:21:214:29 | continue; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:215:17:216:26 | if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:216:21:216:26 | break; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:219:13:229:13 | {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | throw ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:232:9:245:9 | try {...} ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:234:17:234:28 | access to property Length |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:234:33:234:33 | 0 |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:235:17:235:23 | return ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:236:13:237:49 | if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:236:17:236:28 | access to property Length |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:236:33:236:33 | 1 |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:237:17:237:49 | throw ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:240:9:245:9 | {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | if (...) ... |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:207:16:207:16 | access to local variable i |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:208:9:230:9 | {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:212:21:212:27 | return ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:213:17:214:29 | if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:214:21:214:29 | continue; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:215:17:216:26 | if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:216:21:216:26 | break; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:219:13:229:13 | {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | throw ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | object creation of type Exception |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: break] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: continue] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: return] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:232:9:245:9 | try {...} ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:234:17:234:28 | access to property Length |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:234:33:234:33 | 0 |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:235:17:235:23 | return ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:236:13:237:49 | if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:236:17:236:28 | access to property Length |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:236:33:236:33 | 1 |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:237:17:237:49 | throw ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:240:9:245:9 | {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: return] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | if (...) ... |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: return] ...; |
| pre | cflow.cs:192:13:192:19 | return ...; | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:207:16:207:16 | access to local variable i |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:208:9:230:9 | {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:212:21:212:27 | return ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:213:17:214:29 | if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:214:21:214:29 | continue; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:215:17:216:26 | if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:216:21:216:26 | break; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:219:13:229:13 | {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | throw ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:232:9:245:9 | try {...} ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:234:17:234:28 | access to property Length |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:234:33:234:33 | 0 |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:235:17:235:23 | return ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:236:13:237:49 | if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:236:17:236:28 | access to property Length |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:236:33:236:33 | 1 |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:237:17:237:49 | throw ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:240:9:245:9 | {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | if (...) ... |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:199:9:200:9 | {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:207:16:207:16 | access to local variable i |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:208:9:230:9 | {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:212:21:212:27 | return ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:213:17:214:29 | if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:214:21:214:29 | continue; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:215:17:216:26 | if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:216:21:216:26 | break; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:219:13:229:13 | {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | throw ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:232:9:245:9 | try {...} ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:234:17:234:28 | access to property Length |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:234:33:234:33 | 0 |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:235:17:235:23 | return ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:236:13:237:49 | if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:236:17:236:28 | access to property Length |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:236:33:236:33 | 1 |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:237:17:237:49 | throw ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:240:9:245:9 | {...} |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | if (...) ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
| pre | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:207:16:207:16 | access to local variable i |

View File

@@ -101,7 +101,11 @@
| 110 | 20 | cflow.cs:110:20:110:23 | true | true | 111 | 13 | cflow.cs:111:13:113:13 | {...} |
| 127 | 32 | cflow.cs:127:32:127:44 | ... == ... | false | 127 | 53 | cflow.cs:127:53:127:57 | this access |
| 127 | 32 | cflow.cs:127:32:127:44 | ... == ... | true | 127 | 48 | cflow.cs:127:48:127:49 | "" |
| 162 | 48 | cflow.cs:162:48:162:51 | [exception: Exception] true | true | 163 | 9 | cflow.cs:163:9:165:9 | {...} |
| 170 | 21 | cflow.cs:170:21:170:24 | true | true | 170 | 27 | cflow.cs:170:27:170:32 | throw ...; |
| 194 | 48 | cflow.cs:194:48:194:51 | [exception: Exception] true | true | 195 | 9 | cflow.cs:195:9:197:9 | {...} |
| 198 | 35 | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | true | 199 | 9 | cflow.cs:199:9:200:9 | {...} |
| 198 | 35 | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | true | 199 | 9 | cflow.cs:199:9:200:9 | {...} |
| 207 | 16 | cflow.cs:207:16:207:20 | ... > ... | false | 232 | 9 | cflow.cs:232:9:245:9 | try {...} ... |
| 207 | 16 | cflow.cs:207:16:207:20 | ... > ... | true | 208 | 9 | cflow.cs:208:9:230:9 | {...} |
| 211 | 21 | cflow.cs:211:21:211:26 | ... == ... | false | 213 | 17 | cflow.cs:213:17:214:29 | if (...) ... |

View File

@@ -278,9 +278,9 @@
| post | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:40:25:40:29 | false |
| post | ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:39:9:41:9 | {...} |
| post | ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:31 | ...; |
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
| post | ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:43:9:45:9 | {...} |
| post | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
| post | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
| post | ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:47:9:49:9 | {...} |
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:54:13:54:13 | access to parameter b |
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:55:13:55:34 | throw ...; |
@@ -1109,12 +1109,11 @@
| post | cflow.cs:158:9:161:9 | {...} | cflow.cs:157:9:187:9 | try {...} ... |
| post | cflow.cs:159:13:159:38 | ...; | cflow.cs:158:9:161:9 | {...} |
| post | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:38 | ...; |
| post | cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:9:165:9 | catch (...) {...} |
| post | cflow.cs:162:48:162:51 | true | cflow.cs:162:38:162:39 | IOException ex |
| post | cflow.cs:163:9:165:9 | {...} | cflow.cs:162:48:162:51 | true |
| post | cflow.cs:162:48:162:51 | [exception: Exception] true | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| post | cflow.cs:163:9:165:9 | {...} | cflow.cs:162:48:162:51 | [exception: Exception] true |
| post | cflow.cs:164:13:164:18 | throw ...; | cflow.cs:163:9:165:9 | {...} |
| post | cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:166:9:176:9 | catch (...) {...} |
| post | cflow.cs:167:9:176:9 | {...} | cflow.cs:166:41:166:42 | ArgumentException ex |
| post | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:167:9:176:9 | {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| post | cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:167:9:176:9 | {...} |
| post | cflow.cs:169:13:171:13 | {...} | cflow.cs:168:13:175:13 | try {...} ... |
| post | cflow.cs:170:17:170:32 | if (...) ... | cflow.cs:169:13:171:13 | {...} |
@@ -1124,7 +1123,9 @@
| post | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception |
| post | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" |
| post | cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" | cflow.cs:173:13:175:13 | [finally: exception(ArgumentException)] {...} |
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
| post | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; |
| post | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | cflow.cs:164:13:164:18 | throw ...; |
| post | cflow.cs:185:9:187:9 | [finally: return] {...} | cflow.cs:160:13:160:19 | return ...; |
@@ -1145,16 +1146,20 @@
| post | cflow.cs:190:9:193:9 | {...} | cflow.cs:189:9:204:9 | try {...} ... |
| post | cflow.cs:191:13:191:38 | ...; | cflow.cs:190:9:193:9 | {...} |
| post | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:38 | ...; |
| post | cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:9:197:9 | catch (...) {...} |
| post | cflow.cs:194:48:194:51 | true | cflow.cs:194:38:194:39 | IOException ex |
| post | cflow.cs:195:9:197:9 | {...} | cflow.cs:194:48:194:51 | true |
| post | cflow.cs:194:48:194:51 | [exception: Exception] true | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| post | cflow.cs:195:9:197:9 | {...} | cflow.cs:194:48:194:51 | [exception: Exception] true |
| post | cflow.cs:196:13:196:18 | throw ...; | cflow.cs:195:9:197:9 | {...} |
| post | cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:9:200:9 | catch (...) {...} |
| post | cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:26:198:26 | Exception e |
| post | cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:35:198:35 | access to local variable e |
| post | cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:48:198:51 | null |
| post | cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:43 | access to property Message |
| post | cflow.cs:199:9:200:9 | {...} | cflow.cs:198:35:198:51 | ... != ... |
| post | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:198:26:198:26 | [exception: Exception] Exception e | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| post | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} |
| post | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | cflow.cs:198:26:198:26 | [exception: Exception] Exception e |
| post | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e |
| post | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e |
| post | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e |
| post | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:198:48:198:51 | [exception: Exception] null |
| post | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null |
| post | cflow.cs:198:48:198:51 | [exception: Exception] null | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message |
| post | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message |
| post | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | cflow.cs:196:13:196:18 | throw ...; |
| post | cflow.cs:202:9:204:9 | [finally: return] {...} | cflow.cs:192:13:192:19 | return ...; |
| post | cflow.cs:202:9:204:9 | {...} | cflow.cs:199:9:200:9 | {...} |
@@ -1971,13 +1976,13 @@
| pre | ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... |
| pre | ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:39:9:41:9 | {...} |
| pre | ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; |
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
| pre | ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false |
| pre | ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways |
| pre | ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} |
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
| pre | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; |
| pre | ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} |
| pre | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} |
| pre | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; |
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:53:5:56:5 | {...} |
| pre | ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:9:55:34 | if (...) ... |
@@ -2814,19 +2819,22 @@
| pre | cflow.cs:157:9:187:9 | try {...} ... | cflow.cs:158:9:161:9 | {...} |
| pre | cflow.cs:158:9:161:9 | {...} | cflow.cs:159:13:159:38 | ...; |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} |
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:159:13:159:38 | ...; | cflow.cs:159:31:159:36 | "Try2" |
| pre | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:37 | call to method WriteLine |
| pre | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:177:9:179:9 | catch (...) {...} |
| pre | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:160:13:160:19 | return ...; | cflow.cs:185:9:187:9 | [finally: return] {...} |
| pre | cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex |
| pre | cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:48:162:51 | true |
| pre | cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} |
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:48:162:51 | [exception: Exception] true |
| pre | cflow.cs:162:48:162:51 | [exception: Exception] true | cflow.cs:163:9:165:9 | {...} |
| pre | cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; |
| pre | cflow.cs:164:13:164:18 | throw ...; | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} |
| pre | cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex |
| pre | cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:167:9:176:9 | {...} |
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:167:9:176:9 | {...} |
| pre | cflow.cs:167:9:176:9 | {...} | cflow.cs:168:13:175:13 | try {...} ... |
| pre | cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:169:13:171:13 | {...} |
| pre | cflow.cs:169:13:171:13 | {...} | cflow.cs:170:17:170:32 | if (...) ... |
@@ -2837,7 +2845,6 @@
| pre | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; |
| pre | cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception |
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} |
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:185:9:187:9 | {...} |
| pre | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | cflow.cs:186:13:186:41 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | cflow.cs:186:13:186:41 | [finally: exception(IOException)] ...; |
@@ -2855,24 +2862,30 @@
| pre | cflow.cs:189:9:204:9 | try {...} ... | cflow.cs:190:9:193:9 | {...} |
| pre | cflow.cs:190:9:193:9 | {...} | cflow.cs:191:13:191:38 | ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:191:13:191:38 | ...; | cflow.cs:191:31:191:36 | "Try3" |
| pre | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:37 | call to method WriteLine |
| pre | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:192:13:192:19 | return ...; | cflow.cs:202:9:204:9 | [finally: return] {...} |
| pre | cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex |
| pre | cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:48:194:51 | true |
| pre | cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} |
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
| pre | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} |
| pre | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:48:194:51 | [exception: Exception] true |
| pre | cflow.cs:194:48:194:51 | [exception: Exception] true | cflow.cs:195:9:197:9 | {...} |
| pre | cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; |
| pre | cflow.cs:196:13:196:18 | throw ...; | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} |
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e |
| pre | cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:35:198:35 | access to local variable e |
| pre | cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:43 | access to property Message |
| pre | cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:48:198:51 | null |
| pre | cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} |
| pre | cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:51 | ... != ... |
| pre | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: Exception] Exception e |
| pre | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e |
| pre | cflow.cs:198:26:198:26 | [exception: Exception] Exception e | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e |
| pre | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e |
| pre | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message |
| pre | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message |
| pre | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | cflow.cs:198:48:198:51 | [exception: Exception] null |
| pre | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null |
| pre | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
| pre | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
| pre | cflow.cs:198:48:198:51 | [exception: Exception] null | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... |
| pre | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... |
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:202:9:204:9 | {...} |
| pre | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:203:13:203:41 | [finally: exception(Exception)] ...; |
| pre | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | cflow.cs:203:13:203:41 | [finally: exception(IOException)] ...; |

View File

@@ -217,12 +217,12 @@
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; | semmle.label | successor |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(ArgumentException) |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(Exception) |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:46:9:49:9 | catch (...) {...} | semmle.label | exception(Exception) |
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false | semmle.label | successor |
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | semmle.label | successor |
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | successor |
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} | semmle.label | no-match |
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | semmle.label | successor |
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | successor |
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | match |
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | semmle.label | successor |
| ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:9:55:34 | if (...) ... | semmle.label | successor |
| ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:54:13:54:13 | access to parameter b | semmle.label | successor |
@@ -1010,18 +1010,18 @@
| cflow.cs:158:9:161:9 | {...} | cflow.cs:159:13:159:38 | ...; | semmle.label | successor |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; | semmle.label | successor |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:159:13:159:38 | ...; | cflow.cs:159:31:159:36 | "Try2" | semmle.label | successor |
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:37 | call to method WriteLine | semmle.label | successor |
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:162:9:165:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:185:9:187:9 | {...} | semmle.label | return |
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex | semmle.label | successor |
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex | semmle.label | match |
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} | semmle.label | no-match |
| cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:48:162:51 | true | semmle.label | successor |
| cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} | semmle.label | successor |
| cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} | semmle.label | true |
| cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; | semmle.label | successor |
| cflow.cs:164:13:164:18 | throw ...; | cflow.cs:185:9:187:9 | {...} | semmle.label | exception(IOException) |
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex | semmle.label | successor |
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex | semmle.label | match |
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | no-match |
| cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:167:9:176:9 | {...} | semmle.label | successor |
| cflow.cs:167:9:176:9 | {...} | cflow.cs:168:13:175:13 | try {...} ... | semmle.label | successor |
| cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:169:13:171:13 | {...} | semmle.label | successor |
@@ -1033,7 +1033,7 @@
| cflow.cs:174:17:174:44 | throw ...; | cflow.cs:185:9:187:9 | {...} | semmle.label | exception(Exception) |
| cflow.cs:174:23:174:43 | object creation of type Exception | cflow.cs:174:17:174:44 | throw ...; | semmle.label | successor |
| cflow.cs:174:37:174:42 | "Boo!" | cflow.cs:174:23:174:43 | object creation of type Exception | semmle.label | successor |
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | successor |
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | match |
| cflow.cs:178:9:179:9 | {...} | cflow.cs:185:9:187:9 | {...} | semmle.label | successor |
| cflow.cs:185:9:187:9 | {...} | cflow.cs:186:13:186:41 | ...; | semmle.label | successor |
| cflow.cs:186:13:186:40 | call to method WriteLine | cflow.cs:189:9:204:9 | try {...} ... | semmle.label | successor |
@@ -1043,22 +1043,23 @@
| cflow.cs:190:9:193:9 | {...} | cflow.cs:191:13:191:38 | ...; | semmle.label | successor |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; | semmle.label | successor |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(Exception) |
| cflow.cs:191:13:191:38 | ...; | cflow.cs:191:31:191:36 | "Try3" | semmle.label | successor |
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:37 | call to method WriteLine | semmle.label | successor |
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:194:9:197:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:202:9:204:9 | {...} | semmle.label | return |
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex | semmle.label | successor |
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex | semmle.label | match |
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} | semmle.label | no-match |
| cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:48:194:51 | true | semmle.label | successor |
| cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} | semmle.label | successor |
| cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} | semmle.label | true |
| cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; | semmle.label | successor |
| cflow.cs:196:13:196:18 | throw ...; | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(IOException) |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e | semmle.label | successor |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e | semmle.label | match |
| cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:35:198:35 | access to local variable e | semmle.label | successor |
| cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:43 | access to property Message | semmle.label | successor |
| cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:48:198:51 | null | semmle.label | successor |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | successor |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | true |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(Exception) |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:51 | ... != ... | semmle.label | successor |
| cflow.cs:199:9:200:9 | {...} | cflow.cs:202:9:204:9 | {...} | semmle.label | successor |
| cflow.cs:202:9:204:9 | {...} | cflow.cs:203:13:203:41 | ...; | semmle.label | successor |

View File

@@ -349,6 +349,7 @@
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(ArgumentException) |
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(Exception) |
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:25:40:29 | false | normal |
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} | no-match |
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:44:13:44:19 | return ...; | return |
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | return |
| ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:44:13:44:19 | return ...; | return |
@@ -1412,11 +1413,13 @@
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:31:159:36 | "Try2" | normal |
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:31:159:36 | "Try2" | throw(OutOfMemoryException) |
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:160:13:160:19 | return ...; | return |
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:9:165:9 | catch (...) {...} | no-match |
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:164:13:164:18 | throw ...; | throw(IOException) |
| cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:38:162:39 | IOException ex | normal |
| cflow.cs:162:48:162:51 | true | cflow.cs:162:48:162:51 | true | normal |
| cflow.cs:162:48:162:51 | true | cflow.cs:162:48:162:51 | true | true/true |
| cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; | throw(IOException) |
| cflow.cs:164:13:164:18 | throw ...; | cflow.cs:164:13:164:18 | throw ...; | throw(IOException) |
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} | no-match |
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:174:17:174:44 | throw ...; | throw(Exception) |
| cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:166:41:166:42 | ArgumentException ex | normal |
| cflow.cs:167:9:176:9 | {...} | cflow.cs:174:17:174:44 | throw ...; | throw(Exception) |
@@ -1429,6 +1432,7 @@
| cflow.cs:174:17:174:44 | throw ...; | cflow.cs:174:17:174:44 | throw ...; | throw(Exception) |
| cflow.cs:174:23:174:43 | object creation of type Exception | cflow.cs:174:23:174:43 | object creation of type Exception | normal |
| cflow.cs:174:37:174:42 | "Boo!" | cflow.cs:174:37:174:42 | "Boo!" | normal |
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} | no-match |
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | normal |
| cflow.cs:178:9:179:9 | {...} | cflow.cs:178:9:179:9 | {...} | normal |
| cflow.cs:180:9:183:9 | catch {...} | cflow.cs:182:13:182:19 | return ...; | return |
@@ -1455,16 +1459,22 @@
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:31:191:36 | "Try3" | normal |
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:31:191:36 | "Try3" | throw(OutOfMemoryException) |
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:192:13:192:19 | return ...; | return |
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} | no-match |
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:196:13:196:18 | throw ...; | throw(IOException) |
| cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:38:194:39 | IOException ex | normal |
| cflow.cs:194:48:194:51 | true | cflow.cs:194:48:194:51 | true | normal |
| cflow.cs:194:48:194:51 | true | cflow.cs:194:48:194:51 | true | true/true |
| cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; | throw(IOException) |
| cflow.cs:196:13:196:18 | throw ...; | cflow.cs:196:13:196:18 | throw ...; | throw(IOException) |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} | throw(Exception) |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} | throw(OutOfMemoryException) |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:35:198:51 | ... != ... | throw(Exception) |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:35:198:51 | ... != ... | throw(OutOfMemoryException) |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:199:9:200:9 | {...} | normal |
| cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:26:198:26 | Exception e | normal |
| cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:35 | access to local variable e | normal |
| cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:35:198:43 | access to property Message | normal |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:35:198:51 | ... != ... | normal |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:35:198:51 | ... != ... | false/false |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:35:198:51 | ... != ... | true/true |
| cflow.cs:198:48:198:51 | null | cflow.cs:198:48:198:51 | null | normal |
| cflow.cs:199:9:200:9 | {...} | cflow.cs:199:9:200:9 | {...} | normal |
| cflow.cs:202:9:204:9 | {...} | cflow.cs:203:13:203:40 | call to method WriteLine | normal |

View File

@@ -313,15 +313,16 @@
| ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... | semmle.label | successor |
| ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:39:9:41:9 | {...} | semmle.label | successor |
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; | semmle.label | successor |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(ArgumentException) |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(Exception) |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:46:9:49:9 | catch (...) {...} | semmle.label | exception(Exception) |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | semmle.label | exception(ArgumentException) |
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false | semmle.label | successor |
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | semmle.label | successor |
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | successor |
| ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | semmle.label | successor |
| ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:36:10:36:11 | exit M6 | semmle.label | return |
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | successor |
| ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | match |
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | semmle.label | successor |
| ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:36:10:36:11 | exit M6 | semmle.label | return |
| ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:53:5:56:5 | {...} | semmle.label | successor |
@@ -1261,20 +1262,22 @@
| cflow.cs:157:9:187:9 | try {...} ... | cflow.cs:158:9:161:9 | {...} | semmle.label | successor |
| cflow.cs:158:9:161:9 | {...} | cflow.cs:159:13:159:38 | ...; | semmle.label | successor |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; | semmle.label | successor |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:159:13:159:38 | ...; | cflow.cs:159:31:159:36 | "Try2" | semmle.label | successor |
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:37 | call to method WriteLine | semmle.label | successor |
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:185:9:187:9 | [finally: return] {...} | semmle.label | return |
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex | semmle.label | successor |
| cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:48:162:51 | true | semmle.label | successor |
| cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} | semmle.label | successor |
| cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | semmle.label | match |
| cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
| cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | no-match |
| cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:48:162:51 | [exception: Exception] true | semmle.label | successor |
| cflow.cs:162:48:162:51 | [exception: Exception] true | cflow.cs:163:9:165:9 | {...} | semmle.label | true |
| cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; | semmle.label | successor |
| cflow.cs:164:13:164:18 | throw ...; | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | semmle.label | exception(IOException) |
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex | semmle.label | successor |
| cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:167:9:176:9 | {...} | semmle.label | successor |
| cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | semmle.label | match |
| cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
| cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | no-match |
| cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:167:9:176:9 | {...} | semmle.label | successor |
| cflow.cs:167:9:176:9 | {...} | cflow.cs:168:13:175:13 | try {...} ... | semmle.label | successor |
| cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:169:13:171:13 | {...} | semmle.label | successor |
| cflow.cs:169:13:171:13 | {...} | cflow.cs:170:17:170:32 | if (...) ... | semmle.label | successor |
@@ -1285,7 +1288,8 @@
| cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | semmle.label | exception(Exception) |
| cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | semmle.label | successor |
| cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | semmle.label | successor |
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | successor |
| cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | match |
| cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | match |
| cflow.cs:178:9:179:9 | {...} | cflow.cs:185:9:187:9 | {...} | semmle.label | successor |
| cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | cflow.cs:186:13:186:41 | [finally: exception(Exception)] ...; | semmle.label | successor |
| cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | cflow.cs:186:13:186:41 | [finally: exception(IOException)] ...; | semmle.label | successor |
@@ -1306,24 +1310,32 @@
| cflow.cs:189:9:204:9 | try {...} ... | cflow.cs:190:9:193:9 | {...} | semmle.label | successor |
| cflow.cs:190:9:193:9 | {...} | cflow.cs:191:13:191:38 | ...; | semmle.label | successor |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; | semmle.label | successor |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | semmle.label | exception(Exception) |
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
| cflow.cs:191:13:191:38 | ...; | cflow.cs:191:31:191:36 | "Try3" | semmle.label | successor |
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:37 | call to method WriteLine | semmle.label | successor |
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:202:9:204:9 | [finally: return] {...} | semmle.label | return |
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex | semmle.label | successor |
| cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:48:194:51 | true | semmle.label | successor |
| cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} | semmle.label | successor |
| cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | semmle.label | match |
| cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
| cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | no-match |
| cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:48:194:51 | [exception: Exception] true | semmle.label | successor |
| cflow.cs:194:48:194:51 | [exception: Exception] true | cflow.cs:195:9:197:9 | {...} | semmle.label | true |
| cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; | semmle.label | successor |
| cflow.cs:196:13:196:18 | throw ...; | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | semmle.label | exception(IOException) |
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e | semmle.label | successor |
| cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:35:198:35 | access to local variable e | semmle.label | successor |
| cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:43 | access to property Message | semmle.label | successor |
| cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:48:198:51 | null | semmle.label | successor |
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | successor |
| cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:51 | ... != ... | semmle.label | successor |
| cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: Exception] Exception e | semmle.label | match |
| cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | semmle.label | match |
| cflow.cs:198:26:198:26 | [exception: Exception] Exception e | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | semmle.label | successor |
| cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | semmle.label | successor |
| cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | semmle.label | successor |
| cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | semmle.label | successor |
| cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | cflow.cs:198:48:198:51 | [exception: Exception] null | semmle.label | successor |
| cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | semmle.label | successor |
| cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | true |
| cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | semmle.label | exception(Exception) |
| cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | true |
| cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | semmle.label | exception(OutOfMemoryException) |
| cflow.cs:198:48:198:51 | [exception: Exception] null | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | semmle.label | successor |
| cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | semmle.label | successor |
| cflow.cs:199:9:200:9 | {...} | cflow.cs:202:9:204:9 | {...} | semmle.label | successor |
| cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:203:13:203:41 | [finally: exception(Exception)] ...; | semmle.label | successor |
| cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | cflow.cs:203:13:203:41 | [finally: exception(IOException)] ...; | semmle.label | successor |