Я новичок в Reason. Я хочу проанализировать число с плавающей точкой с правильной обработкой исключений.
Это работает:
let number = try (float_of_string("1,")) {
| _ => 0.0;
};
Но я хочу сделать что-то вроде этого:
let number = try (float_of_string("1,")) {
| Failure(_) => 0.0;
};
К сожалению, это не ловит исключение. Я предполагаю, что это исключение Failure
, потому что в консоли разработчика я вижу ошибку с этими данными:
[["Failure", -2], "float_of_string"]
Я также попытался вызвать эту ошибку для себя, и она была правильно перехвачена:
try (raise(Failure("test"))) {
| Failure(_) => Js.log("caught")
};
Редактировать:
Мой код должен работать в соответствии с песочницей: пример для reasonml.github.io/en/try, спасибо @Yawar. Это также работает, если я запускаю его с узла вместо браузера.
Кажется, что исключение, которое выдается этой функцией, не из того же источника, что и исключение, которое мы сравниваем. Возможно, проблема в среде разработки.
Я создал демонстрационный репозиторий - Exception Demo