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..!!