我正在编写代码来验证表单的字段。因此,我编写了一个名为 validateFields 的函数来执行此操作。因此,如果所有字段都正确,该函数将返回 true,否则返回 false。 validateFields 函数在另一个名为 saveForm 的函数中调用。 saveForm 函数的目的是仅当 validateFields 返回 true 时才保存数据。 saveForm 已经在 try 块中执行了另一个 Promise 回调,如果 Promise 失败,则会返回错误。 我想要实现的是,如果 validateFields 返回 false,那么我想在 saveForm 函数中抛出错误。
// this function is present in another file say validation.js
function validateForm(){
//some logic to validate which returns true or false;
}
//this function is present in another file say saveForm.js, the structure of saveForm function is as follows
function saveForm(){
var isFormValid = validation.validateForm(); //validateForm function invoked
try{
//some existing logic to send the saved form
}catch(error){
console.log(error)
}
}
现在,如果 isFormValid 为 false,那么我不想执行 try 块中的现有逻辑,而是抛出一个错误,指出表单验证失败。我尝试按照以下方式进行操作,但失败了
function saveForm(){
try{
var isFormValid = validation.validateForm(); //validateForm function invoked
try{
//some existing logic to send the saved form
}catch(error){
console.log(error)
}catch(error){
console.log("Validation failed error");
}
}
}
我只想执行外部 catch 块,但我从两个 catch 块获取消息,所以有人可以帮助我如何放置 isValidForm 逻辑,以便我只收到验证失败错误吗?
每个
catch or finally
之后应该有一个try
!
在你的逻辑中,最后一个捕获应该在第一次尝试之外,以捕获其错误,即使这样也没有
if
语句来检查 isFormValid
试试这个逻辑:
function saveForm() {
var isFormValid = validation.validateForm(); //validateForm function
try {
if (!isFormValid) {
throw "Form is invalid";
} else {
try {
//some existing logic to send the saved form
console.log("form save logic");
// throw error if something goes wrong. Only for test purpose
throw "Error while saving";
} catch (error) {
console.log(error);
}
}
} catch (error) {
console.log(error);
}
}
或者这个,IMO 更具可读性
function saveForm() {
var isFormValid = validation.validateForm(); //validateForm function
if (isFormValid) {
try {
//some existing logic to send the saved form
console.log("form save logic");
// throw error if something goes wrong. Only for test purpose
throw "Error while saving";
} catch (error) {
console.log(error);
}
} else {
throw "Form is invalid";
}
}
//In Another function place this saveForm() function inside a try/catch block to handle the custom thrown error if form is invalid:
function validateAndSave(){
try{
saveForm();
}catch(e){
console.error(e);
}
}