834
練習題目 1:基本錯誤處理
題目描述:寫一個函數,接收一個物件並返回其屬性的值。如果屬性不存在,拋出錯誤並在 catch
區塊中處理。
function getProperty(obj, prop) {
try {
if (!(prop in obj)) {
throw new Error(`屬性 '${prop}' 不存在`);
}
return obj[prop];
} catch (error) {
console.error(error.message);
}
}
// 測試
const person = { name: 'John', age: 30 };
console.log(getProperty(person, 'name')); // John
console.log(getProperty(person, 'gender')); // 錯誤:屬性 'gender' 不存在
練習題目 2:數字解析器
題目描述:改進 parseNumber
函數,使其不僅能解析整數,還能解析浮點數,並在錯誤時顯示自定義錯誤訊息。
function parseNumber(str) {
try {
let num = parseFloat(str); // 使用 parseFloat 來解析浮點數
if (isNaN(num)) {
throw new Error("這不是一個有效的數字");
}
console.log("解析成功,數字是:" + num);
} catch (error) {
console.error("錯誤:" + error.message);
}
}
// 測試
parseNumber("123.45"); // 解析成功,數字是:123.45
parseNumber("abc"); // 錯誤:這不是一個有效的數字
練習題目 3:API 請求
題目描述:模擬一個 API 請求,使用 try...catch
來處理可能的網路錯誤或解析錯誤,並確保 finally
區塊中記錄請求結束時間。
async function fetchData(url) {
try {
let response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP 錯誤!狀態碼:${response.status}`);
}
let data = await response.json();
console.log("取得的資料:", data);
} catch (error) {
console.error("錯誤:", error.message);
} finally {
console.log("API 請求結束時間:" + new Date().toLocaleTimeString());
}
}
// 測試
fetchData('https://jsonplaceholder.typicode.com/posts/1')
.then(() => console.log('請求完成'));
探索更多來自 雖然沒準備什麼資料 的內容
Subscribe to get the latest posts sent to your email.