」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 試...捕捉 V/s 安全分配 (?=):現代發展的福音還是詛咒?

試...捕捉 V/s 安全分配 (?=):現代發展的福音還是詛咒?

發佈於2024-11-06
瀏覽:399

Try...Catch V/s Safe Assignment (?=): A Boon or a Curse for Modern Development?

最近,我發現了 JavaScript 中引入的新安全賦值運算子 (?.=),我對它的簡單性著迷。 ?

安全賦值運算子 (SAO) 是傳統 try...catch 區塊的簡寫替代方案。它允許您內聯捕獲錯誤,而無需為每個操作編寫明確的錯誤處理程式碼。這是一個例子:

const [error, response] ?= await fetch("https://api.example.com/data");

就是這樣!就是這麼簡單。如果取得請求拋出錯誤,它會自動儲存在錯誤常數中;否則,回應將保留結果。很酷吧?

但等等…還有更多。

使用SAO時,您仍需要進一步處理錯誤,如下所示:

async function getData() {
  const [requestError, response] ?= await fetch("https://api.example.com/data");

  if (requestError) {
    handleRequestError(requestError);
    return;
  }

  const [parseError, json] ?= await response.json();

  if (parseError) {
    handleParseError(parseError);
    return;
  }

  const [validationError, data] ?= validation.parse(json);

  if (validationError) {
    handleValidationError(validationError);
    return;
  }

  return data;
}

雖然 SAO 簡化了錯誤處理,但它可能會導致更冗長的程式碼。與傳統的 try...catch 區塊進行比較:

async function getData() {
try {
  const response = await fetch("https://api.example.com/data");
  const json = await response.json();
  const data = validation.parse(json);
  return data;
} catch (error) {
  handleError(error);
  return;
}
}

在這種情況下,try...catch只需要9行程式碼,而SAO大約是它的兩倍。

那麼,你覺得呢?安全賦值運算子是否可以節省時間,或者是否會增加不必要的複雜度?

版本聲明 本文轉載於:https://dev.to/nikhilagr15/trycatch-vs-safe-assignment-a-boon-or-a-curse-for-modern-development-55dg?1如有侵犯,請洽study_golang@163 .com刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3