摘要
引发用户生成的异常。
声明
#include <zircon/syscalls.h>
zx_status_t zx_thread_raise_exception(uint32_t options,
zx_excp_type_t type,
const zx_exception_context_t* context);
说明
zx_thread_raise_exception() 会引发用户生成的异常。该异常将传递到与当前线程关联的异常通道。
目前,options 实参必须是 ZX_EXCEPTION_TARGET_JOB_DEBUGGER,这会导致异常传递到作业调试器异常通道。
未来,options 可能会扩展,以支持面向其他类型的异常通道。
type 实参必须是 ZX_EXCP_USER。未来,type 可能会扩展,以支持引发其他类型的异常。
zx_exception_context_t 中的 arch 字段会被忽略。请改用 synth_code 和 synth_data 字段来传递有关异常的信息。
小于 ZX_EXCP_USER_CODE_USER0 的代码保留供系统定义用途。
应用可以使用大于或等于 ZX_EXCP_USER_CODE_USER0 的代码来实现自己的目的。
返回值
如果成功,zx_thread_raise_exception() 会返回 ZX_OK。如果失败,则返回负错误值。
错误
ZX_ERR_INVALID_ARGS options 是
ZX_EXCEPTION_TARGET_JOB_DEBUGGER 以外的值,type 是
ZX_EXCP_USER 以外的值,或者 context 是无效指针。
ZX_ERR_NO_MEMORY 因内存不足而失败。
用户空间没有很好的方法来处理此(不太可能发生的)错误。
在未来的 build 中,此错误将不再发生。