gpt4 book ai didi

c++ - node.js 附加组件中未捕获异常

转载 作者:行者123 更新时间:2023-11-28 02:58:09 26 4
gpt4 key购买 nike

我目前正在为 Armadillo 线性代数库编写一个基于 ObjectWrap 的包装类。我注意到当 Armadillo 发出异常时,即使我尝试处理异常,它也不会被附加代码捕获:

if(args[0].isString()){
try{
std::string s(*v8::String::AsciiValue(args[0]->ToString()));
MatrixWrap* matrix = new MatrixWrap(s);
matrix->Wrap(args.This());
}catch(exception& e){
cout << "caught exception" << endl; // this code is never called.
}
}

下面给出相应的对应构造函数(_matrix是arma::mat的一个实例,如果字符串格式不正确则抛出异常):

MatrixWrap::MatrixWrap(string s):_matrix(s){

}

当我运行代码时,我得到以下输出:

> var arma = require('./build/Release/armadillo');
> var matrix = new arma.Matrix('1 0; 0 1');
> matrix.print();
1.0000 0
0 1.0000

> var B = new arma.Matrix('1 0; 0');

error: Mat::init(): inconsistent number of columns in given string
libc++abi.dylib: terminate called throwing an exception
Abort trap: 6

尽管有 catch 子句,但好像没有处理异常

最佳答案

尝试使用 catch(...) 而不是 catch(exception& e),它应该捕获所有异常。

Armadillo 根据错误抛出 std::logic_error、std::bad_alloc 或 std::runtime_error

关于c++ - node.js 附加组件中未捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21524097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com