簡體   English   中英

當我使用拋出新錯誤時,字符串中出現錯誤

[英]getting error in string when i use throw new error

const functionName = async () => {
    try {
        //code
    } catch (error) {
        let data = {}
        data.error = error
        data.fnName = 'checkIfSupplierIsAllowedToSync'
        throw new Error(data)
    }
}


const fnName = async () => {
    try {
        await functionName()
    } catch (error) {
        console.log("error#####", error)
    }
}

答案:- 錯誤##### "[object Object]"

為什么我在字符串中出現錯誤? 我如何得到 function 名稱錯誤?

錯誤期望將字符串傳遞給構造函數。

[object Object]是傳入的簡單 object 的字符串表示形式。

> {}.toString()
'[object Object]'

創建一個錯誤以將數據附加到,而不是 object

const functionName = async () => {
    try {
        //code
    } catch (error) {
        const wrapped_error = new Error(`Wrapped: ${error.message}`)
        wrapped_error.error = error
        error.fnName = 'checkIfSupplierIsAllowedToSync'
        throw wrapped_error
    }
}

這可以添加到封裝所需行為的Error class

class WrappedError extends Error {
  constructor(error, fnName) {
    super(`Wrapped: ${error.message}`)
    this.error = error
    this.fnName = fnName
  }
}

const functionName = async () => {
    try {
        //code
    } catch (error) {
        throw new WrappedError(error, 'checkIfSupplierIsAllowedToSync')
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM