我正在编写一个命令行工具haxe(一个微型lisp计算器:D)在这个时间点在项目中,我无法阻止用户对非存在函数进行无效调用或使用错误参数(它需要额外的包装),所以我尽管采用pythonic方法:让它崩溃并捕获错误。然而,似乎我无法从haxe中捕捉到C++分段错误。hxcpp如何捕捉C++分段错误?
例子:
hxlisp => (+ 1 2)
REPL.hx:33: Null Function Pointer
hxlisp => (hello)
make: *** [cpp] Segmentation fault: 11
怎样的代码是什么样子?
public function loop() {
while (true) {
try {
var inp:String = this.input();
if (inp.length == 0) continue;
var tree:SExpr = mkSexpr(parse(inp));
var a = SExpr.List(sexpr_values(tree)[0]);
var program = eval(a, env.std_env);
this.output(program);
} catch(eof:Eof) {
break;
} catch(error:Dynamic) {
trace(error);
}
}
}
但是似乎没有办法(或者我找不到它)捕获错误的异常,并从中恢复。有没有人有一个想法,有多少可能这种方法让它崩溃并从HaxeC++中的错误中恢复?请注意,在Neko或JavaScript中,这不是问题。
我知道有一个相关的问题只适用于C++:http://stackoverflow.com/questions/2350489/how-to-catch-segmentation-fault-in-linux 但是我正在寻找一个haxe惯用解决方案(除了包装这个看起来不太便携的库)。 –