iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0

在開發中,我們無法預測所有狀況,例如伺服器回傳錯誤、使用者輸入錯誤格式、變數未定義等,但JavaScript如果在執行時遇到錯誤就會中斷整段程式,所這時候就需要用try…catch來處理這個問題
只要我們使用try…catch,就能攔截錯誤,繼續讓程式運作

1.基本用法

try:放你想嘗試執行的程式
catch:當錯誤發生時,執行這裡的程式
error:錯誤物件,可以包含messagestack等資訊

範例:

console.log("開始程式");

try {
  let result = JSON.parse("{name:'Tom'}"); //錯誤的格式
  console.log(result);
} catch (error) {
  console.log("出現錯誤!");
  console.log("錯誤訊息:", error.message);
}

console.log("程式繼續執行~");

2.finally

try…catch其實除了上面的結構以外還有一個沒有寫出來的部分就是finally
finally可以用來做清理動作,例如關閉連線、重設狀態等等

範例:

try {
  console.log("讀取資料中...");
  throw new Error("伺服器回應超時");
} catch (err) {
  console.log("錯誤:", err.message);
} finally {
  console.log("結束請求");
}

3.自訂錯誤

也可以用throw主動丟出錯誤

function checkAge(age) {
  if (age < 0) {
    throw new Error("年齡不能為負數!");
  }
  return "年齡正確:" + age;
}

try {
  console.log(checkAge(-5));
} catch (e) {
  console.log("發生錯誤:" + e.message);
}

這樣就可以控制錯誤何時出現,並在catch裡處理了

4.常見錯誤類型

錯誤類型 範例 說明
ReferenceError console.log(x) 變數不存在
TypeError null.toString() 對錯誤型別操作
SyntaxError eval("foo bar") 程式語法錯誤
RangeError new Array(-1) 超出允許範圍
URIError decodeURI("%") URI 錯誤編碼

小練習

function safeParse(jsonString) {
  try {
    return JSON.parse(jsonString);
  } catch (err) {
    console.error("格式錯誤!", err.message);
    return null;
  }
}

let goodData = '{"name":"Mia"}';
let badData = '{name:"Mia"}';

console.log(safeParse(goodData)); //{ name: "Mia" }
console.log(safeParse(badData));  //格式錯誤!

今天的內容就到這裡啦,不知不覺已經24天了真感人TT...


上一篇
Day23:模組化
系列文
30天入門Java Script24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言