У меня есть сервер node.js, который использует Node-ffi для вызова кода C ++ и отправки его клиенту. Проблема, с которой я сталкиваюсь, заключается в том, что клиент может отправлять пользовательский ввод, который приводит к сбою программы C ++. Как мне предотвратить это?
Когда происходит сбой программы C ++, в терминале сервера появляется следующий вывод:
npm ERR! code ELIFECYCLE
npm ERR! errno 3221225477
npm ERR! [email protected] start: `node app.js`
npm ERR! Exit status 3221225477
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
Мне интересно, возможно ли написать блок try-catch или что-то еще вокруг вызовов функций node-ffi, например:
try {
greenbuild.GB_SetArchOffset(messageJSON.Item.arch_offset);
greenbuild.GB_SetArchRadius(messageJSON.Item.arch_radius);
greenbuild.GB_SetBayLength(messageJSON.Item.bay_length);
greenbuild.GB_SetBayWidth(messageJSON.Item.bay_width);
greenbuild.GB_SetPeakHeight(messageJSON.Item.peak_height);
greenbuild.GB_SetWallHeight(messageJSON.Item.wall_height);
greenbuild.GB_SetColumnSpacing(messageJSON.Item.column_spacing);
greenbuild.GB_SetNumBayLength(messageJSON.Item.number_bays_length);
greenbuild.GB_SetNumBayWidth(messageJSON.Item.number_bays_width);
greenbuild.GB_SetNumPanelHorzLength(messageJSON.Item.horizontal_panels_length);
greenbuild.GB_SetNumPanelHorzWidth(messageJSON.Item.horizontal_panels_width)
greenbuild.GB_SetNumPanelVert(messageJSON.Item.vertical_panels);
} catch (ERROR) {
console.error("error occurred, but the whole server is still running.")
}
где «greenbuild» — это библиотека кода на языке C ++.
Спасибо.
Ответ заключается в том, чтобы выполнить проверку входных данных на стороне C ++, а для отладки — записать текстовые файлы в качестве выходных данных сбоя.
Других решений пока нет …