Skip to content

duk_safe_to_stacktrace()

2.4.0 string stack protected

プロトタイプ

c
const char *duk_safe_to_stacktrace(duk_context *ctx, duk_idx_t idx);

スタック

| ... | val | ... | -> | ... | val.stack | ... |

要約

duk_to_stacktrace() と同様であるが、もし coercion が失敗した場合、 duk_to_stacktrace() が coercion エラーに適用されます。これも失敗した場合、代わりにあらかじめ確保された固定エラー文字列 "Error" が使用されます (この文字列はあらかじめ確保されているので、メモリ不足で失敗することはありません)。

ECMAScript に相当します。

javascript
function duk_safe_to_stacktrace(val) {
    try {
        return duk_to_stacktrace(val);
    } catch (e) {
        try {
            return duk_to_stacktrace(e);
        } catch (e2) {
            return 'Error';
        }
    }
}

c
if (duk_peval_string(ctx, "1 + 2 +") != 0) {  /* => SyntaxError */
    printf("failed: %s\n", duk_safe_to_stacktrace(ctx, -1));
} else {
    printf("success\n");
}
duk_pop(ctx);

参照

duk_safe_to_string duk_to_stacktrace