摘要
引發使用者產生的例外狀況。
宣告
#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 記憶體不足,因此失敗。
使用者空間無法妥善處理這項 (不太可能發生的) 錯誤。
這個錯誤不會出現在日後的版本中。