2
我該如何幫助F#編譯器解釋重新拋出一個沒有返回值的異常?告訴F#重新返回沒有值
例如,考慮包裝的操作記錄異常:
let doDivision() =
try
2/0
with ex ->
log ex
reraise
編譯器會報告這個錯誤reraise
:
這種表達預計有型
int
但這裏的類型爲unit -> 'a
我該如何幫助F#編譯器解釋重新拋出一個沒有返回值的異常?告訴F#重新返回沒有值
例如,考慮包裝的操作記錄異常:
let doDivision() =
try
2/0
with ex ->
log ex
reraise
編譯器會報告這個錯誤reraise
:
這種表達預計有型
int
但這裏的類型爲unit -> 'a
「reraise」是一個函數。你需要傳遞單位。
let doDivision() =
try
2/0
with ex ->
log ex
reraise()
哦,傻了。 :-) –
它不能有「沒有返回值」,因爲'try'和'with'分支會有不同的類型。它需要與'try'分支具有相同的返回類型,即'int'。這是編譯器告訴你的,「這個表達式應該有int_類型」。 –
如果我理解正確,重新運行會返回''T',它將變成'int'以匹配'try'表達式。 –
正是........ –