List Lacks Leeks es-419 Explainer

Explicación de La lista carece de puerros

Objetivo de este acertijo:

Usar una declaración try-catch para capturar un error en el código establecido.

Tutorial de la solución:

El código de inicio define algunos datos y varias funciones. Pero no se ejecuta nada, así que agrega una llamada de la función a prepareRecipeCards() al final del código.

Ahora se ejecuta el código, pero hay un error. Si se agrega una declaración try…catch dentro de prepareRecipeCards(), el código puede manejar cualquier error que se produzca.

En la parte superior de prepareRecipeCards(), agrega una declaración try…catch. Dentro del bloque try, pon todas las funciones que están dentro de la función. Elimínalas de la función. Se debe ver así:

 try {
    addIngredient(leeks);
    printTotalWeight();
    ingredients.forEach(printIngredient());
  } catch (e) {
  }

El bloque catch captura el error, pero aún no se imprime nada. El último paso es agregar console.log(e) al bloque catch. Cuando el código se ejecute ahora, imprimirá el error.

Solución del código de ejemplo:

(Pulsa a continuación para revelar)

import {addIngredient} from 'cookbook';
import {itemWeight, totalWeight} from 'debugging';

let ingredients = [
  {
    name: 'potatoes',
    kilos: 4,
  },
  {
    name: 'carrots',
    kilos: 2,
  },
  {
    name: 'onions',
    kilos: 1,
  },
  {
    name: 'chickens',
    kilos: 'two',
  },
];

let leeks = {name: 'leeks', weight: 1.5};

function printTotalWeight() {
  let total = 0;
  for (let i of ingredients) {
    total += i.kilos;
  }
  print('Total ingredient weight: ' + total + ' kilos');
}

function printIngredient(ingredient) {
  print(ingredient.kilos + ' kilos ' + ingredient.name);
}

function prepareRecipeCards() {
  try {
    addIngredient(leeks);
    printTotalWeight();
    ingredients.forEach(printIngredient());
  } catch (e) {
    console.log(e);
  }
}

prepareRecipeCards();

Conceptos de JavaScript: number, string, try...catch block

Código adicional Código adicional (código oculto que se ejecuta antes del código del acertijo):

function _addIngredient({name, kilos}) {
  if (isNaN(kilos)) {
    throw new Error(`kilos must be a number. got ${kilos} instead`);
  }
  ingredients.push({
    name,
    kilos,
  });
  console.log(`Added ${name}, ${kilos} kilos, to the ingredients list.`);
}
defineModule(
  'cookbook',
  {
    addIngredient: _addIngredient,
  }
);
defineModule(
  'debugging',
  {
    itemWeight: 'Item Weight: ',
    totalWeight: 'Total Weight: ',
  }
);
3 Likes

Había olvidado la palabra leeks dentro del paréntesis de addIngredient( )

Hi Profile - Wicho_Chuc - Grasshopper Support