Artifact
2857a4281b32789ee68fb66778316140851ec9cd:
- File
Tests/Exceptions/app.js
— part of check-in
[7c39f7a8f1]
at
2011-11-06 20:34:36
on branch jsunit-port
— Пример тестовых скриптов, демонстрирующих проблему с перехватом исключений и ее обход
(user:
kuntashov
size: 795)
[more...]
0000: 24 65 6e 67 69 6e 65 20 4a 53 63 72 69 70 74 0d $engine JScript.
0010: 0a 24 75 6e 61 6d 65 20 74 65 73 74 45 78 63 65 .$uname testExce
0020: 70 74 69 6f 6e 73 41 70 70 0d 0a 0d 0a 76 61 72 ptionsApp....var
0030: 20 6c 69 62 20 3d 20 61 64 64 69 6e 73 2e 62 79 lib = addins.by
0040: 55 6e 69 71 75 65 4e 61 6d 65 28 22 74 65 73 74 UniqueName("test
0050: 45 78 63 65 70 74 69 6f 6e 73 4c 69 62 22 29 3b ExceptionsLib");
0060: 0d 0a 0d 0a 6c 69 62 2e 6f 62 6a 65 63 74 2e 53 ....lib.object.S
0070: 65 74 45 72 72 6f 72 48 61 6e 64 6c 65 72 28 45 etErrorHandler(E
0080: 72 72 6f 72 48 61 6e 64 6c 65 72 29 3b 0d 0a 0d rrorHandler);...
0090: 0a 66 75 6e 63 74 69 6f 6e 20 45 72 72 6f 72 48 .function ErrorH
00a0: 61 6e 64 6c 65 72 28 65 78 63 65 70 74 29 0d 0a andler(except)..
00b0: 7b 0d 0a 20 20 20 20 74 68 72 6f 77 20 65 78 63 {.. throw exc
00c0: 65 70 74 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 ept;..}....funct
00d0: 69 6f 6e 20 6d 61 63 72 6f 73 c8 f1 ea eb fe f7 ion macros......
00e0: e5 ed e8 e5 cf f0 e8 c2 fb e7 ee e2 e5 d4 f3 ed ................
00f0: ea f6 e8 e8 28 29 0d 0a 7b 0d 0a 20 20 20 20 74 ....()..{.. t
0100: 72 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 ry.. {..
0110: 20 20 20 6c 69 62 2e 6f 62 6a 65 63 74 2e 74 68 lib.object.th
0120: 72 6f 77 45 72 72 6f 72 46 75 6e 63 74 69 6f 6e rowErrorFunction
0130: 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 ();.. }..
0140: 63 61 74 63 68 20 28 65 29 0d 0a 20 20 20 20 7b catch (e).. {
0150: 0d 0a 20 20 20 20 20 20 20 20 4d 65 73 73 61 67 .. Messag
0160: 65 28 22 47 6f 74 63 68 61 3a 20 22 20 2b 20 65 e("Gotcha: " + e
0170: 2e 6d 65 73 73 61 67 65 29 3b 0d 0a 20 20 20 20 .message);..
0180: 7d 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e }..}....function
0190: 20 6d 61 63 72 6f 73 c8 f1 ea eb fe f7 e5 ed e8 macros.........
01a0: e5 cf f0 e8 cf f0 ee e3 f0 e0 ec ec ed ee ec c2 ................
01b0: fb e7 ee e2 e5 cc e0 ea f0 ee f1 e0 28 29 0d 0a ............()..
01c0: 7b 0d 0a 20 20 20 20 74 72 79 0d 0a 20 20 20 20 {.. try..
01d0: 7b 0d 0a 20 20 20 20 20 20 20 20 6c 69 62 2e 69 {.. lib.i
01e0: 6e 76 6f 6b 65 4d 61 63 72 6f 73 28 22 54 68 72 nvokeMacros("Thr
01f0: 6f 77 45 72 72 6f 72 4d 61 63 72 6f 73 22 29 3b owErrorMacros");
0200: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 63 61 74 .. }.. cat
0210: 63 68 20 28 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 ch (e).. {..
0220: 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 28 22 Message("
0230: 47 6f 74 63 68 61 3a 20 22 20 2b 20 65 2e 74 65 Gotcha: " + e.te
0240: 78 74 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a xt);.. }..}..
0250: 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f ..function macro
0260: 73 c8 f1 ea eb fe f7 e5 ed e8 e5 cf f0 e8 c2 fb s...............
0270: e7 ee e2 e5 d4 f3 ed ea f6 e8 e8 57 6f 72 6b 61 ...........Worka
0280: 72 6f 75 6e 64 28 29 0d 0a 7b 0d 0a 20 20 20 20 round()..{..
0290: 74 72 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 try.. {..
02a0: 20 20 20 20 6c 69 62 2e 6f 62 6a 65 63 74 2e 74 lib.object.t
02b0: 68 72 6f 77 45 72 72 6f 72 46 75 6e 63 74 69 6f hrowErrorFunctio
02c0: 6e 57 6f 72 6b 61 72 6f 75 6e 64 28 29 3b 0d 0a nWorkaround();..
02d0: 20 20 20 20 7d 0d 0a 20 20 20 20 63 61 74 63 68 }.. catch
02e0: 20 28 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 (e).. {..
02f0: 20 20 20 20 20 4d 65 73 73 61 67 65 28 22 47 6f Message("Go
0300: 74 63 68 61 3a 20 22 20 2b 20 65 29 3b 0d 0a 20 tcha: " + e);..
0310: 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a }..}....