當我們得到一個實際上是例外的對象時,我們可以用他們做任何我們可以用我們的語言中的普通對象做的事情。我們可以將它們作爲參數傳遞,我們可以將它們存儲在某個集合中,最糟糕的是,我們可以通過這些方法返回它們!爲什麼很多語言將Exception對象視爲一等公民?
所以有可能有人寫臭這樣的代碼:
public Exception doSomethingCritical()
{
Exception error = null;
try
{
...
}
catch (Exception e)
{
// maybe at least here is the logging of the error if we are lucky
error = e;
}
return error;
}
所以,問題是爲什麼是一個例外對象的概念在許多面向對象語言一流的公民?如果我們只允許異常對象(如throw)允許的語言中有限的構造,可能會更好。
有時候比依靠人們的判斷來防止愚蠢的用法更爲複雜。錘子是用來驅動釘子的,但是我不能阻止人們將它用於其他目的......如果我嘗試,它會花費我。 – jldupont 2009-10-29 13:18:45
我真的不想聽到嗤之以鼻的聲音,但它有什麼關係?我想我想知道這會帶來什麼問題? – MattC 2009-10-29 13:19:44
問題是異常有解決報告錯誤的問題作爲方法的返回值(如在C中)。所以你可以忘記看結果而完全忽略它。 – 2009-10-29 13:34:43