2013-08-24 42 views
1

我在項目中經常使用array。我剛剛意識到,對於作業中的out of bounds錯誤(例如a.(100) <- 5),如果沒有捕捉異常,它將自動停止執行。查找陣列操作和映射操作的運行時錯誤

我想知道錯誤發生的地方,一旦發生錯誤就會發生。其中一種方法是在陣列操作周圍添加try ... with ...,但顯然它很乏味且不好看......

有沒有人有更好的主意?

map操作的邏輯相同。我注意到,findmap中,如果不存在綁定,則會引發Not_found,但如果沒有try ... with ...,則不會顯式顯示任何內容。我如何能夠系統地明確顯示它?

回答

0

使用調試符號「-g」編譯程序並設置環境變量OCAMLRUNPARAM = b。或者使用Printexc

谷歌是您的朋友: http://www.mega-nerd.com/erikd/Blog/CodeHacking/Ocaml/exception_backtraces.htmlhttp://caml.inria.fr/pub/docs/manual-ocaml/libref/Printexc.html,...

+0

我總是有'ocamlopt.opt -g'和'ocamlc.opt -g'和'出口OCAMLRUNPARAM = B',但它仍然沒有顯示任何錯誤,我可以通過'try ... with ...'趕上。 – SoftTimur

+0

另外,我應該在哪裏放置'Printexc'命令?看起來,異常消失在文件發生的地方。因此,在最高級別捕捉異常不起作用... – SoftTimur