JavaScript 如何在使用对象的属性时抛出错误

JavaScript 如何在使用对象的属性时抛出错误

在本文中,我们将尝试理解如何使用JavaScript的一些理论解释和编码示例在使用对象的属性时抛出错误。

让我们首先看一下下面的部分,它展示了在JavaScript中创建具有某些属性及其相应值的对象的语法。

语法:

let object_name = {
    property_name : value,
    ...
}

现在,让我们快速查看下面的示例,展示了在JavaScript中创建对象以及如何访问对象的任何属性。

示例: 在这个示例中,我们将创建一个包含简单属性值对以及嵌套对象的属性值对的对象,并尝试从中访问任何属性并在输出中显示。

Javascript

<script> 
    let employee_details = { 
        name: "Aman", 
        designation: "technical writer", 
        age: 22, 
        graduated: true, 
        address: { 
            street: "XYZ", 
            place: "ABC", 
            state: "PQR", 
            pincode: 1122333, 
        }, 
        skills: { 
            coding: ["C", "C++", "Java"], 
            frontEnd_BackEnd: ["HTML", "CSS",  
                "JavaScript", "React", "TypeScript"], 
        }, 
    }; 
  
    console.log(employee_details); 
  
    console.log( 
        "Place where an employee lives is : " 
            + employee_details.address.place 
    ); 
</script>

输出:

{
  name: 'Aman',
  designation: 'technical writer',
  age: 22,
  graduated: true,
  address: { street: 'XYZ', place: 'ABC', 
      state: 'PQR', pincode: 1122333 },
  skills: {
    coding: [ 'C', 'C++', 'Java' ],
    frontEnd_BackEnd: [ 'HTML', 'CSS', 
        'JavaScript', 'React', 'TypeScript' ]
  }
}
Place where an employee lives is : ABC

现在让我们来看看我们的主要问题陈述,即如何在使用对象的属性时抛出错误,以下是一些示例:

示例1:

  • 在这个示例中,我们首先使用在前一节中展示的语法创建一个空对象。
  • 在创建了一个空对象之后,我们将使用 Object.defineProperty() 方法,在同一个对象上定义一个属性,进而创建一个会产生错误的函数。
  • 换句话说,我们将使用该方法在所有已创建的对象上定义某些属性,然后定义任何一个函数,在访问该对象的属性时执行其工作。
  • 这意味着该属性未定义,因此当访问该属性时,我们将通过在同一个属性上使用该函数来生成或抛出错误。
  • 随后,在try/catch块内,我们将访问该属性,然后在catch块内捕获该函数引发的对应错误。

Javascript

<script> 
    let employee_data = {}; 
    Object.defineProperty(employee_data, "name", { 
        get: function () { 
            throw new Error("Employee Data not found!"); 
        }, 
    }); 
  
    try { 
        let data = employee_data.name; 
        console.log(data); 
    } catch (error) { 
        console.log("Caught Error: " + error.message); 
    } 
</script>

输出:

Caught Error: Employee Data not found!

示例2:

  • 在这个示例中,我们将创建一个空对象,就像在前一个示例中所创建的那样,但是这里我们将使用一个 代理 来覆盖用户定义方法的getter函数。
  • 在定义一个get函数之后,这个函数包含了目标对象及其属性,我们将在该函数内部抛出一个错误,该错误将显示传入的属性名未找到。
  • 然后使用try/catch块来访问属性并在catch块中捕获对应的错误。

JavaScript

<script> 
    let employee_data = new Proxy( 
        {}, 
        { 
            get(object_name, property_name) { 
                throw new Error(`${property_name}  
                    property not found!!..`); 
            }, 
        } 
    ); 
  
    try { 
        let property_1 = employee_data.age; 
        console.log(property_1); 
    } catch (error) { 
        console.log(error.message); 
    } 
  
    try { 
        let property_1 = employee_data.name; 
        console.log(property_1); 
    } catch (error) { 
        console.log(error.message); 
    } 
</script>

输出:

age property not found!!..
name property not found!!..

示例3:

  • 在这个示例中,我们将创建一个具有特定属性和相应值的对象(包括字符串和数字格式)。
  • 然后,我们将创建一个函数,它接受两个参数,即属性名称和目标对象本身。
  • 然后,我们将检查传入对象中是否存在相应的属性,根据情况返回true或false。
  • 稍后,我们将使用返回的函数值,如果在对象本身中找不到属性,则抛出错误,并在catch块中捕获该错误。

JavaScript

<script> 
    let employee_details = { 
        name: "Aman", 
        age: 22, 
    }; 
  
    let checkProperty = (propertyName, object) => { 
        return propertyName in object ? true : false; 
    }; 
  
    try { 
        if (checkProperty("address", employee_details) === false) 
            throw new Error("Property not found..!!"); 
    } catch (error) { 
        console.log("Caught Error: " + error.message); 
    } 
</script>

输出:

Caught Error: Property not found..!!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程