在使用Julia宏時,我似乎回到了試錯編程中,這也不例外。我試圖編寫一個簡單的宏來捕獲表達式中的任何錯誤,並在表達式失敗時設置一個標誌。這是一個宏,因爲我希望表達式(可能包含一個或多個賦值語句)在調用上下文中進行評估。所以,像這樣:宏在Julia分配中發現錯誤
macro flag_errors(ex)
broken = false
esc(quote
try
$(ex)
catch
broken = true
end
end)
end
我已經試過嵌套esc
功能的各種方式,但我還沒有找到正確評估的通話環境中分配的方法:
julia> @flag_errors a=2
2
julia> a
a not defined
julia> @flag_errors a=2+"X"
true
julia> a
a not defined
julia> broken
broken not defined
什麼寫這個宏的正確方法是什麼? try
塊是否會導致問題?
我試圖在extras/test.jl中增強setup塊中的錯誤。理想情況下,錯誤會以測試套件報告沒有被破壞的方式被捕獲。 – Harlan