Exceptions in Scol » History » Version 1
iri, 09/25/2012 12:44 AM
1 | 1 | iri | h1. Exceptions in Scol |
---|---|---|---|
2 | |||
3 | *exceptions* are not yet explicitely supported. |
||
4 | |||
5 | However, you can use this method : |
||
6 | |||
7 | "*_testpakS*":http://www.scolring.org/files/doc_html/_testpakS.html is a Scol function. It loads a source string in the current environment without running and it returns nil if no error found or an explicit string message if an error occurs. But the program continue. |
||
8 | |||
9 | |||
10 | <pre> |
||
11 | let _testpakS <string_code> -> result in |
||
12 | if result == nil then // no error |
||
13 | _loadS <code> |
||
14 | else |
||
15 | // to do something |
||
16 | // continue |
||
17 | </pre> |
||
18 | |||
19 | |||
20 | Something like that : |
||
21 | |||
22 | <pre> |
||
23 | proto divideX = fun [] I;; |
||
24 | |||
25 | fun main ()= |
||
26 | _showconsole; |
||
27 | |||
28 | srand time; |
||
29 | let (((rand&255)*100)>>8)-50 -> x in // randomized value (-50 +50) |
||
30 | let strcatn "fun divideX () = 100 / " :: (itoa x) :: ";;" :: nil -> strCode in |
||
31 | let _testpakS strCode -> res in |
||
32 | if (nil == res) then // it's ok |
||
33 | ( |
||
34 | _loadS strCode; // we load and run this part of code |
||
35 | _fooId divideX; |
||
36 | ) |
||
37 | else // divide by zero ! |
||
38 | ( |
||
39 | _fooS res; |
||
40 | _fooId x; |
||
41 | 1; |
||
42 | ); |
||
43 | 0;; |
||
44 | </pre> |
||
45 | |||
46 | Depending on the context, you can also use the Scol functions "*_testpak*":http://www.scolring.org/files/doc_html/_testpak.html or "*_test_exist*":http://www.scolring.org/files/doc_html/_test_exist.html. |
||
47 | |||
48 | |||
49 | License : "CC-BY-SA-2.0":https://creativecommons.org/licenses/by-sa/2.0/ |
||
50 | Tutorial by iri |
||
51 | Updated by / |