let _ = require( 'wTools' ); function decrement( i ) { try { if( i <= 0 ) throw _.error.err( 'negative!' ); return i-1; } catch( err ) { let error = _.error.err( err, '\nFailed to decrement' ); if( _.error.once( error ) ) console.log( error ); throw error; } } function divide( i ) { try { if( i % 2 === 1 ) throw _.error.err( 'odd!' ); return decrement( i / 2 ); } catch( err ) { let error = _.error.err( err ); if( _.error.once( error ) ) console.log( error ); throw error; } } try { divide( 0 ); } catch( err ) { let error = _.error.err( err ); if( _.error.once( error ) ) console.log( error ); } /* Error logged once. States of an error make possible to account it and avoid logging second time. */