List Lacks Leeks pt-br Explainer

Explicação de A lista não tem alho-poró

Objetivo deste desafio:
Use um comando try…catch para capturar um erro no código predefinido.

Passo a passo da solução:
O código inicial define alguns dados e várias funções. Mas nada é executado, portanto adicione uma chamada de função em prepareRecipeCards() no final do código.

O código é executado agora, mas há um erro. Se for acrescentada um comando try…catch dentro de prepareRecipeCards(), o código pode lidar com qualquer erro que esteja ocorrendo.

Na parte superior de prepareRecipeCards(), adicione um comando try…catch. Dentro do bloco try, coloque todas as funções que estão dentro da função. Exclua-as da função. Fica assim:

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

O bloco de catch pega o erro, mas nada é impresso ainda. A última etapa é adicionar console.log(e) ao bloco de catch. Agora, quando o código for executado ele vai imprimir o erro.

Solução do código de exemplo:

(Toque abaixo 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();

Conceitos de JavaScript: number, string, try...catch block
Código adicional Código adicional (código oculto executado antes do código do desafio):

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


O que está acontecendo?

1 Like

What is happening?

Summary

This text will be hidden

Ya lo pase despues de varias pruebas lo pude pasar ahora estoy que no que mas es necesario en “stew on this” si la consola de salida “output” dice que

por ahora no se exactamente que mas se espera en la solucion no muestra ningun error quiero pasar al siguiente problema.

solução