const is a block level variable so when i try suspect code
try{
const foo = bar[global.name].foofoo[global.name2];
}catch (err){
console.log(error(err.message));
}
const is hide in the {}
but
const foo ;
try{
foo = bar[global.name].foofoo[global.name2];
}catch (err){
console.log(error(err.message));
}
not working either because const
must be init on declaration.
So how should I using const
in try..catch
block ?
You've hit the nail on the head, because of block scoping you can't declare a const
in a try catch block and use it outside the block.
You have 2 3 options:
Use let
:
let foo;
try{
foo = bar[global.name].foofoo[global.name2];
}catch (err){
console.log(error(err.message));
}
Or if there is very little code to come after the try catch block, and it all depends on the success of the try
, you can put the rest of the code in the try
:
try{
const foo = bar[global.name].foofoo[global.name2];
return foo;
}catch (err){
console.log(error(err.message));
}
EDIT
Option 3 inspired by @Yury Tarabanko's comment: if possible modularise the try catch part into its own function, the output of which should be the value of the new const
:
function trycatch() {
try {
return bar[global.name].foofoo[global.name2];
} catch (err) {
console.log(error(err.message));
return undefined; // or whatever you want
}
}
const foo = trycatch(); // === bar[global.name]... if succeeded, otherwise === the return value from the catch block
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With