File: error_test.js

package info (click to toggle)
freej 0.10git20080824-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 13,504 kB
  • ctags: 19,398
  • sloc: ansic: 135,255; cpp: 32,550; sh: 9,318; perl: 2,932; asm: 2,355; yacc: 1,178; makefile: 1,119; java: 136; lex: 94; python: 16
file content (102 lines) | stat: -rw-r--r-- 2,900 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*  FreeJ example scripts
 *  (c) Copyright 2005 Christoph Rudorff aka MrGoil <goil@dyne.org>
 *
 * This source code is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Public License as published 
 * by the Free Software Foundation; either version 3 of the License,
 * or (at your option) any later version.
 *
 * This source code is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * Please refer to the GNU Public License for more details.
 *
 * You should have received a copy of the GNU Public License along with
 * this source code; if not, write to:
 * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

/*
Example how to handle errors in js and freej

run with -D3 and/or -c to see the mess

*/


var cam = new Array();
function do_cam(n) {
    var cam_obj = null;
    if (cam[n]) {
        echo("delete cam"+n);
        cam_obj = cam[n];
        echo("file: " + cam_obj.get_filename());
        rem_layer(cam_obj);
        cam[n] = null;
        delete (cam_obj); // FIXME: destructor still not called
    } else {
        file = "/dev/video" + n;
        echo("open cam" + n + " " + file);    
        try {
            cam_obj = new CamLayer(320, 240, file);
        } catch (e) {
            echo ("camExp: " + dumpex(e) );
        }
        if (cam_obj) {
            echo("cam obj: " + cam_obj);
            add_layer(cam_obj);
            cam[n] = cam_obj;
        } else{
            echo("cam failed");
        }
    }
}

// dump Exception
// props: message fileName lineNumber stack name
function dumpex(e) {
    var msg = "Dump ex: ";
    for (prop in e) {
        msg += "'"+prop + "'='" + e[prop]+"', ";
    }
    return msg;
}
        
mkbd = new KeyboardController();
register_controller(mkbd);
mkbd.released_q = function() { quit(); }
mkbd.released_c = function() { include("cynosure.js"); }
mkbd.released_p = function() { include("pan_joy.js"); }
mkbd.released_1 = function() { do_cam(0); }
mkbd.released_2 = function() { do_cam(1); }
mkbd.released_3 = function() { echo("\n\n\nSPAM SPAM\n\n"); }

mkbd.released_0 = function() { 
    echo("test bad geo layer");
    try {
        echo("try");
        g=new GeometryLayer(30,30,90,90); // freej object
        echo("\n got geo layer: " + g);
    } catch (e) {
        echo ("Exp: " + dumpex(e) );
    }
    echo("test end");
}
mkbd.released_9 = function() { 
    echo("test bad Array");
    try {
        echo("try");
        g=new Array(-90); // js core object
        echo("\n ok got : " + g);
    } catch (e) {
        echo ("Exp: " + dumpex(e) );
    }
    echo("test end");
}

mkbd.released_s = function() { 
    echo("now making unhandled exception:");    
    g=new GeometryLayer(30,30,90,90);
    echo("done (or not ...)");    
}