2012-10-19 22 views
2

所以,我是新來的編程(作爲例子的Python)的默認方法的功能,我的問題是:使用異常處理程序來擴展

是它被認爲是不好的實踐使用異常處理程序用自定義功能覆蓋編程語言默認方法的錯誤消息行爲?我的意思是,使用像這樣的東西(Python)在道德上是正確的:

def index(p, val): 
    try: 
     return p.index(val) 
    except ValueError: 
     return -1 

也許我不夠精確。我的意思是:這是一種正常的或不推薦的做法,將所拋出的異常(我想這不適用於任何地方)作爲合法有效的病例聲明來考慮嗎?

一樣,上面給出的例子的想法是不是讓自定義錯誤消息,但壓制可能出現的錯誤沒有警告既不用戶還是其他程序模塊發生的事情,那事情錯了。

+0

很好,直到你不關心確切的錯誤..你知道爲什麼會出現你的錯誤是完全正常的。」 –

+1

*「......它是否符合道德標準......」*好吧,大多數程序員並沒有舉行例外處理,以至於認爲他們的使用符合倫理的正確或錯誤。 –

回答

3

我認爲做這樣的事情是OK,只要你使用的函數名,這使得用戶不使用內置的明確表示。如果用戶認爲他們正在使用一個內置一下子index返回-1,想象可能發生的錯誤......他們這樣做:

a[index(a,'foo')] 

,突然,他們得到的最後一個元素該列表(不是foo)。


彷彿一個非常重要的規律,只處理你知道該怎麼做例外。上面的例子很好地說明了這一點。榮譽。

+0

> a [index(a,'foo')] 這是我沒有想到的。你知道的越多... – Vleseg

+0

@Vleseg - 自從'a [a。這是一個愚蠢的例子。index('foo')]'實際上只是獲取'foo'或者如果它不在列表中,則會引發'ValueError'。 – mgilson

1

這是完全正常的,但取決於你正在檢查什麼樣的條件。開發者有責任檢查這些條件。有些例外對於該計劃是致命的,有些則可能不是。全部取決於方法的上下文。

1

對於像python這樣的語言,我認爲給函數提供自定義錯誤信息要比通用的ValueError例外要好得多。 但是,對於您自己的應用程序,在您的方法中使用此功能可以使代碼更易於閱讀和維護。

對於其他語言,同樣是真實的,但你應該嘗試,並確保你沒有模擬天生其他功能產生不同的行爲,同時隱藏例外。

1

如果你知道哪兒你的錯誤會發生,錯誤的原因太多,那麼就沒有什麼不妥這樣那樣的處理。因爲你只是採取適當的行動來解決發生錯誤的事情,你知道會發生。

因此,For E.g: - 如果您試圖劃分兩個數字,並且您知道if the denominator is 0,那麼您不能劃分,那麼在這種情況下,您可以使用自定義消息來表示該問題。