昨天我們認識了 jq 的 module, module 的存在讓我們可以打包被重複使用的邏輯,像是程式庫(library)一樣,讓不同的程式去呼叫相同的函式。我們也修改了 main.jq ,只留最外層的架構,將大部分的邏輯提取成函式並存放於 data_processing.jq 這個 module 之中,讓 main.jq 變得簡潔。今天,我們來認識 jq 的錯誤處理。
師父:今天我們將深入探討 jq 的錯誤處理機制。讓我們從最基本的開始,逐步深入複雜的用法。
徒弟:好的,師父。我很期待學習如何優雅地處理錯誤。
jq 中的 error() 函式用於直接拋出錯誤。
error("some exception")
定義:error(message) 函式接受一個字串參數作為錯誤訊息,並終止執行程式。
用法:當遇到無法繼續處理的情況時,可以使用 error() 函式拋出錯誤並提供有意義的錯誤訊息。
try {一段表達式}
用於捕捉可能發生的錯誤,但不處理它們。
try error("some exception")
定義:try 後面跟著一個表達式,如果該表達式拋出錯誤,try 會捕捉錯誤並以 empty(空)作為捕捉到錯誤後預設的處理。
用法:當你想要嘗試執行可能會失敗的操作,但不需要特別處理錯誤時使用。
使用 try 語法之後,也就使用了錯誤捕捉機制,而不是直接拋出錯誤。錯誤被捕捉後,程式會繼續執行而不是終止。
?
運算元?
運算元是一種簡潔的錯誤處理方式,是 try {一段表達式}
的簡化版。
error("some exception")?
定義:?
運算元放在表達式後面,如果表達式拋出錯誤,它會以 empty(空)作為捕捉到錯誤後預設的處理。而不是拋出錯誤。
try-catch 結構提供了完整的錯誤捕捉和處理機制。
try error("some exception") catch .
定義:try
後面跟著可能拋出錯誤的表達式,catch
後面跟著處理錯誤的表達式。這邊的.
表示回傳捕捉到的錯誤物件。
用法:當你需要不只是捕捉錯誤,還要對錯誤進行特定處理時使用。
這是最完整的錯誤處理結構。與單純的 try
或 ?
運算元不同,它允許你自定義錯誤處理邏輯,而不是預設以 empty 作為捕捉到錯誤後的處理方式。
今天我們認識了 jq 的錯誤處理的幾種方法,其中有提到了empty。empty 不回傳任何東西,連 null 也沒有喔! 直接是沒有輸出。我們明天再繼續將今天學到的內容,應用在我們現有的程式中吧。
感謝自己今天也認真的學習 😊