2011-08-10 53 views
1

我有一個讀取配置的類。現在的問題是我不知道如何報告這個班的錯誤。如何報告駝鹿構造函數的錯誤?

使用die是不夠的,因爲配置是參數化的,並且錯誤是常見的。

這種情況很複雜,我調用MooseBUILD方法中的讀函數。因爲這個用法在使用類時顯着提高了可讀性,所以我想保持這種方式。

+0

我想你需要定義「錯誤」才能得到有用的答案。施工過程中的錯誤應該防止施工,因此「死亡」是合適的。在這個問題中,你認爲什麼非錯誤條件是「錯誤」? – darch

回答

1

die有什麼問題?它會拋出一個異常,您可以根據需要捕獲和處理它。事實上,Moose本身會在驗證錯誤時拋出異常。

+0

所以我應該使用'die'並且用'eval'來捕獲它? –

+1

@Let_Me_Be - 你可以用'eval'來捕捉,但是有些角落可能會咬你。我正在使用[Try :: Tiny](http://search.cpan.org/perldoc?Try::Tiny)來避開它們。有關詳細信息,請參閱其文檔(背景)。 – bvr

1

您可能想要查看Carpcroak()函數。從它的文檔:因爲他們像 模具()或警告()

鯉魚程序是在你自己的模塊是有用的,但有消息這更可能是有用的 到你的模塊的用戶。在cluck,招供和longmess 的情況下,上下文是調用堆棧中每個調用的摘要。對於更短的消息,您可以使用鯉魚或呱呱聲來報告錯誤,因爲 來自您的模塊被調用的地方。

Try::Tiny一起使用,您會得到一個比eval更好的,更靈活的描述性解決方案。例如,您不必擔心會導致$ @提供不良信息的邊緣案例。你的例外可以更準確地描述,也可以更詳細。通過鯉魚,你甚至可以讓你的cro叫行爲像坦白一樣,提供詳細的堆棧跟蹤,這使得更容易確切地看到問題的起源。