摘要
引发用户生成的异常。
声明
#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
因内存不足而失败。
用户空间没有好办法处理这种(不太可能)错误。
在将来的版本中,此错误不会再发生。