我正在haxe(一个迷你lisp计算器:D)中编写一个命令行工具,在项目的这个时间点我不能阻止用户对一个不存在的函数进行无效调用或使用false参数(它需要额外的包装器),所以我对pythonic方法:让它崩溃并捕获错误。然而,似乎我无法以任何方式捕获来自haxe的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中没有问题。
答案 0 :(得分:0)
不,没有办法从分段故障中捕获并恢复。分段错误是一个硬错误:您的进程已尝试访问无效内存,并且操作系统正在关闭该进程,因为它。您必须避免分段错误。