你可能常在程式錯誤訊息裡看到 exception,其實它跟 exclude(排除)是同源的。字源是拉丁文 ex-(向外)加上 capere(抓取/拿走),組合起來就是 excipere,意思就是「從原本的一整堆裡,把你拿走」。
想像你正在處理一籃蘋果,你把其中一顆爛的挑出來丟掉,這就是 exception。在法律上,它是「例外條款」,就像合約規定大家都要遵守,但特地「抓出」某個情況不適用;在生活中,它是「例外」,代表某件事不符合通常的規律。
中文最貼切的類比就是「剔除」或「破例」。剔除是指把它排除在外,破例則是承認它是個不按牌理出牌的特例。這個字在程式設計裡,就是當程式遇到「意料之外」的狀況,強制把執行流程「挑出來」去處理錯誤。
下次看到 exception,先問自己:這是一條被「踢出去」的規則,還是某個「破例」的狀況?