摘要
引发用户生成的异常。
声明
#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
,这会将异常传递到作业调试程序异常渠道。将来,选项可能会进行扩展,以便能够定位其他类型的例外渠道。
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 中,此错误不会再发生。