исключение — hxcpp, как отловить ошибку сегментации C ++?

Я пишу инструмент командной строки на haxe (мини-калькулятор lisp: D) в данный момент в проекте. Я не могу запретить пользователю делать недопустимый вызов несуществующей функции или использовать ложные аргументы (для этого потребуются дополнительные оболочки) Так что я думаю о питоническом подходе: пусть он падает и фиксирует ошибку. Однако, похоже, я никак не могу уловить ошибку сегментации C ++ от haxe.

Пример:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]