1. Конструкция:
try {
// что угодно
} catch (err) {
throw err;
}
не имеет смысла. Так как она равносильна:
// что угодно
2. Использование aсинхронной функции с одним лишь возвратом:
async method() {
return await _method();
}
так же бессмысленно и код можно упростить до:
method() {
return _method();
}
3.
"огородить избыточные try/catch везде" неправильно, потому что:
const foo = () => {
try {
bar();
} catch (e) {
// этот блок не будет вызван никогда, так как ошибка перехватывается в вызове bar()
}
};
const bar = () => {
try {
dangerousCall();
} catch (e) {
// этот блок будет вызван в случае ошибки вызова dangerousCall()
}
}
try {
foo();
} catch (e) {
// этот блок не будет вызван никогда, так как ошибка перехватывается в вызове bar()
}
Демо
4. Обрабатывайте ошибку там, где выполняется функция, которая может ее инициировать.
Правильно ли я понимаю, что я могу убрать try/catch из методов класса Geo? Ведь если я оберну в try/catch вызов geo.method(), то всё работать будет так же.
Нет это было бы неправильным решением. Смотрите пункт 4.