Tests for break on exception.

Running test: testPauseOnInitialState

evaluate 'caught()'..

evaluate 'uncaught()'..

evaluate 'uncaughtFinally()'..

evaluate 'caughtFinally()'..

Running test: testPauseOnExceptionOff

evaluate 'caught()'..

evaluate 'uncaught()'..

evaluate 'uncaughtFinally()'..

evaluate 'caughtFinally()'..

Running test: testBreakOnUncaughtException

evaluate 'caught()'..

evaluate 'uncaught()'..
paused on exception:
{
    description : 1
    type : number
    uncaught : true
    value : 1
}

evaluate 'uncaughtFinally()'..
paused on exception:
{
    description : 1
    type : number
    uncaught : true
    value : 1
}

evaluate 'caughtFinally()'..
paused on exception:
{
    description : 1
    type : number
    uncaught : true
    value : 1
}

Running test: testBreakOnAll

evaluate 'caught()'..
paused on exception:
{
    description : 1
    type : number
    uncaught : false
    value : 1
}

evaluate 'uncaught()'..
paused on exception:
{
    description : 1
    type : number
    uncaught : true
    value : 1
}

evaluate 'uncaughtFinally()'..
paused on exception:
{
    description : 1
    type : number
    uncaught : true
    value : 1
}

evaluate 'caughtFinally()'..
paused on exception:
{
    description : 1
    type : number
    uncaught : true
    value : 1
}

Running test: testTryFinallyOriginalMessage

evaluate '
      try {
        throw 1;
      } finally {
      }
    '..
paused on exception:
{
    description : 1
    type : number
    uncaught : true
    value : 1
}

Running test: testPromiseRejectedByCallback

evaluate '
      function fun() { eval("throw 'rejection';") }
      var p = new Promise(function(res, rej) { fun(); res(); });
      var r;
      p.then(() => { r = 'resolved'; }, (e) => { r = 'rejected' + e; });
    '..
paused on exception:
{
    type : string
    uncaught : true
    value : rejection
}
r = 
{
    type : string
    value : rejectedrejection
}

Running test: testBreakOnExceptionAfterReconnect

evaluate 'f()'..
paused on exception:
{
    className : Error
    description : Error     at f (<anonymous>:106:144)     at <anonymous>:137:154
    objectId : <objectId>
    subtype : error
    type : object
    uncaught : true
}

reconnect..

evaluate 'f()'..
paused on exception:
{
    className : Error
    description : Error     at f (<anonymous>:106:144)     at <anonymous>:137:154
    objectId : <objectId>
    subtype : error
    type : object
    uncaught : true
}

Running test: testBreakOnExceptionInSilentMode
evaluate 'caught()'
evaluate 'uncaught()'
evaluate 'uncaughtFinally()'
evaluate 'caughtFinally()'
