wiki/examples/js/error-handling.md
// @NO_AUTO_TRANSPILE
import ccxt from '../../js/ccxt.js';
const verbose = process.argv.includes('--verbose');
//-----------------------------------------------------------------------------
const printSupportedExchanges = () => console.log('Supported exchanges:', ccxt.exchanges.join(', '));
const printUsage = () => {
console.log('Usage: node', process.argv[1], 'id'.green);
printSupportedExchanges();
};
const run = async (id) => {
// check if the exchange is supported by ccxt
const exchangeFound = ccxt.exchanges.indexOf(id) > -1;
if (exchangeFound) {
console.log('Instantiating', id, 'exchange');
// instantiate the exchange by id
const exchange = new ccxt[id]({ verbose });
// try to load markets and catch the errors if any
try {
await exchange.loadMarkets();
}
catch (e) {
if (e instanceof ccxt.NetworkError) {
console.log(exchange.id, 'loadMarkets failed due to a network error:', e.message);
}
else if (e instanceof ccxt.ExchangeError) {
console.log(exchange.id, 'loadMarkets failed due to exchange error:', e.message);
}
else {
console.log(exchange.id, 'loadMarkets failed with:', e.message);
}
// rethrow the error "higher up" the call chain
throw e;
}
// try to fetch a ticker and catch the errors if any
try {
const symbol = 'ETH/BTC';
const response = await exchange.fetchTicker(symbol);
console.log(response);
}
catch (e) {
if (e instanceof ccxt.NetworkError) {
console.log(exchange.id, 'fetchTicker failed due to a network error:', e.message);
}
else if (e instanceof ccxt.ExchangeError) {
console.log(exchange.id, 'fetchTicker failed due to exchange error:', e.message);
}
else {
console.log(exchange.id, 'fetchTicker failed with:', e.message);
}
// rethrow the error "higher up" the call chain
throw e;
}
}
else {
console.log('Exchange', id, 'not found');
printSupportedExchanges();
}
};
(async function main() {
if (process.argv.length > 2) {
let id = process.argv[2];
await run(id);
}
else {
printUsage();
}
process.exit();
})();