<snapdata remixID="8964497"><project name="throw and catch with breakpoints" app="Snap! 10.1-dev, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAABY5JREFUeF7tnU9LrAUUh8/M6NVFonalG5oahpa4KAhB+kMqtrAiSGJAF14HJBet+gDSwgt9gghXLgJX4jeQcimGQbS6IAiKJGqaiP+9xrykOFz1xpnD9TDneXe+M+fMOc/vYeZ9ZxamLi4uLoQDAvdEIIWA90Sel00IICAi3CuBGwVcWlqS5uZmyWQyJsMdHx/L1taWdHR0mPSjSekQeE7Aubm5RL67jsrKSvn95ydytvqHiNx9Cfn2Z6Py4J1PknYrKyvS19dXOvTYpGgCBQIuLCxIVVVV0nR9fV3q6+sLXmBxcVE6OzulpqZG/vr+fWl7tbzg8cybnXK+slhwLv3xmKy0fJWc29/fl5aWFqmrqyt6cBqUBoECAdfW1mRzczPZbHJyMpGxoqJCamtrpa2tTaampmR8fFzqHj6Uv590yVu1ZVcUHvR9JxfnJ3L6y48FZFIffSNP3/j86tzOzo709vaWBj22KJpAgYDLy8vJtVr+mJ6elqOjo+RdsL29XXK5nIyNjUk2m5XXHz2Sf374sEDAVG2jlL335Y0C/vnap1eDHhwcSE9PT9GD06A0CBQImL/5yH9MplKpZLuGhga5vIFobGyU1dVVqa6ulmfnZ5L+6QtpufYOeBuOTPe38tsrHyQPb2xsyMDAgKTT6dKgxxZFE3juJmR2djZpmhftrqMxsyvPnv569ZT819n/eZucu/z77N2vZWP/LLmm7OrqktbW1qKHpkHpELjxa5jd3V3J35CcnJy8cNPLd8vLJ+Z/WMmfu/4DS/5asru7+4W9eEI8AnwRHS9zVxsjoKs44g2DgPEyd7UxArqKI94wCBgvc1cbI6CrOOINg4DxMne1MQK6iiPeMAgYL3NXGyOgqzjiDYOA8TJ3tTECuooj3jAIGC9zVxsjoKs44g2DgPEyd7UxArqKI94wCBgvc1cbI6CrOOINg4DxMne1MQK6iiPeMAgYL3NXGyOgqzjiDYOA8TJ3tTECuooj3jAIGC9zVxsjoKs44g2DgPEyd7UxArqKI94wCBgvc1cbI6CrOOINg4DxMne1MQK6iiPeMAgYL3NXGyOgqzjiDYOA8TJ3tTECuooj3jAIGC9zVxsjoKs44g2DgPEyd7UxArqKI94wCBgvc1cbI6CrOOINg4DxMne1MQK6iiPeMAgYL3NXGyOgqzjiDYOAt2Q+MzMj29vb0t/fL01NTfHMeEkbI+AtoPf29mR0dFROT09lc3NTBgcHpaysTB4/fiyVlZUvKZ7SfxkEvCPj+fl5mZiYkPw/3L5+HB4eysjISPJPufNicugJIKBCwOPjYxkeHpZ0Oi3ZbFZPn0pBwP/5ETw0NJR8BOdyOSkvL0cdIwIIyE2IkUq6Ngio40aVEQEENAJJGx0BBNRxo8qIAAIagaSNjgAC6rhRZUQAAY1A0kZHAAF13KgyIoCARiBpoyOAgDpuVBkRQEAjkLTREUBAHTeqjAggoBFI2ugIIKCOG1VGBBDQCCRtdAQQUMeNKiMCCGgEkjY6Agio40aVEQEENAJJGx0BBNRxo8qIAAIagaSNjgAC6rhRZUQAAY1A0kZHAAF13KgyIoCARiBpoyOAgDpuVBkRQEAjkLTREUBAHTeqjAggoBFI2ugIIKCOG1VGBBDQCCRtdAQQUMeNKiMCCGgEkjY6Agio40aVEQEENAJJGx0BBNRxo8qIAAIagaSNjgAC6rhRZUQAAY1A0kZHAAF13KgyIoCARiBpoyOAgDpuVBkRQEAjkLTREUBAHTeqjAggoBFI2ugIIKCOG1VGBBDQCCRtdAQQUMeNKiMCCGgEkjY6Agio40aVEQEENAJJGx0BBNRxo8qIAAIagaSNjgAC6rhRZUQAAY1A0kZHAAF13KgyIoCARiBpoyOAgDpuVBkR+BfM6au3OHL14gAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="throw and catch with breakpoints"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;pt:lança _&#xD;</translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="catch breakpoint %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><variables><list struct="atomic" id="30">bp</list></variables><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block s="reportNewList"><list><block var="cont"/><block s="reifyReporter"><autolambda><block var="bp"/></autolambda><list></list></block></list></block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="bp"/><l>0</l></list></block><script><block s="doRun"><block var="action"/><list></list></block></script><script><block s="doDeclareVariables"><list><l>temp</l></list></block><block s="doSetVar"><l>temp</l><block var="bp"/></block><block s="doSetVar"><l>bp</l><l>0</l></block><block s="doRun"><block var="temp"/><list></list></block></script></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw breakpoint %&apos;catchtag&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script><block s="doSetVar"><l></l><block var="innerCont"/></block><block s="doRun"><block s="reportListItem"><l>1</l><block var="catchtag"/></block><list></list></block></script><list></list></block><list><block s="reportListItem"><l>2</l><block var="catchtag"/></block></list></block></script><list><l>innerCont</l></list></block></block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="116"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="117"></list></costumes><sounds><list struct="atomic" id="118"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="123"><costumes><list struct="atomic" id="124"></list></costumes><sounds><list struct="atomic" id="125"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="20"><custom-block s="catch %upvar %cs"><l>tag</l><script><block s="doSetVar"><l>test</l><l>0</l></block><block s="doRepeat"><l>10</l><script><block s="doWait"><l>1</l></block><block s="doChangeVar"><l>test</l><l>1</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="test"/><l>5</l></list></block><script><custom-block s="throw %s"><block var="tag"/></custom-block></script><list></list></block></script></block></script><comment w="294.999999" collapsed="false">What should happen: the catch block starts the script from the beginning, which increments the test variable. When the test variable gets to 5, the throw block stops the script. When the catch block is run again, it starts the script from the beginning. </comment></custom-block></script><script x="20" y="231.25"><custom-block s="catch breakpoint %upvar %cs"><l>tag</l><script><block s="doSetVar"><l>test</l><l>0</l></block><block s="doRepeat"><l>10</l><script><block s="doWait"><l>1</l></block><block s="doChangeVar"><l>test</l><l>1</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="test"/><l>5</l></list></block><script><custom-block s="throw breakpoint %s"><block var="tag"/></custom-block></script><list></list></block></script></block></script><variables><variable name="bp"><l>0</l></variable></variables><comment w="352.000001" collapsed="false">What should happen: the catch breakpoint block starts the script from the beginning, which increments the test variable. When the test variable gets to 5, the throw breakpoint block stores its continuation in a block variable of the catch breakpoint block and stops the script. When the catch breakpoint block is run again, it starts the script from the throw breakpoint block. </comment></custom-block></script><script x="20" y="442.50000000000017"><custom-block s="catch breakpoint %upvar %cs"><l>tag</l><script><block s="doSayFor"><l>first</l><l>2</l></block><custom-block s="throw breakpoint %s"><block var="tag"/></custom-block><block s="doSayFor"><l>second</l><l>2</l></block><custom-block s="throw breakpoint %s"><block var="tag"/></custom-block><block s="doSayFor"><l>third</l><l>2</l></block></script><variables><variable name="bp"><l>0</l></variable></variables><comment w="198.18359375" collapsed="false">This also works with multiple breakpoints.</comment></custom-block></script></scripts></sprite><watcher var="test" style="normal" x="10" y="10" color="243,118,29"/></sprites></stage><variables><variable name="test"><l>1</l></variable></variables></scene></scenes></project><media name="throw and catch with breakpoints" app="Snap! 10.1-dev, https://snap.berkeley.edu" version="2"></media></snapdata>