Как мне помочь компилятору F # интерпретировать повторное бросание исключения как не имеющего возвращаемого значения?Скажите F #, что ререйз не возвращает значение
Для примера рассмотрим оберточной операцию регистрировать исключение:
let doDivision() =
try
2/0
with ex ->
log ex
reraise
Доклады компилятора эта ошибка для reraise
:
Это выражение, как ожидается, иметь тип
int
но здесь имеет типunit -> 'a
У него не может быть «никакого возвращаемого значения», потому что тогда ветви 'try' и' with' будут иметь разные типы. Он должен иметь тот же тип возврата, что и ветвь 'try', а именно' int'. Это то, что компилятор говорит вам, «это выражение должно было иметь тип int_». –
Если я правильно понимаю, ререйз возвращает '' T', который становится 'int' в соответствии с выражением' try'. –
Точно ........ –