我在寫一些類,想知道如何正確處理不成功的場景。例如,一個文件上傳類,它作爲參數接受$ _FILES資源的名稱:類除了成功之外還拋出異常,這是一種很好的練習/編程形式嗎?
class FileUpload {
private $file;
public function __construct($file) {
$this->file = $file;
}
public function upload() {
if (!isset($_FILES[$this->file])) {
throw new Exception("Reference to non existent resource.");
}
if ($_FILES[$this->file]['error'] !== 0) {
throw new Exception("Resource indicates error.");
}
// All other sorts of checks here, like security checks,
// and then finally moving of the file to it's final destination
}
}
這是適當的形式嗎?我的思路是這樣的:當開發者創建一個FileUpload的新實例時,他的意圖是要麼上傳文件,要麼知道爲什麼沒有上傳,而這個類將會給他這個。或者:
1)true(文件被測試的格式是否正確,檢查過安全性,如果它是圖像,甚至可以進一步處理,現在它正是你想要的地方。 )
2)異常(出事了,消息是讓你確切地知道,這樣你就可以對付它。)
如果這一切都很好,我應該只使用例外,自定義消息,或爲所有事情創建自定義例外,例如WrongMimeType?
如果很重要 - 類將是開源的,可供所有人使用,所以從這方面我也希望使它們成爲標準化,開發人員友好且可以輕鬆插入現有軟件的儘可能。
我會使用自定義異常,他們實際上被多次使用。不要爲一個特定用例使用自定義異常。其實我會認爲這個概念很好。 – bwoebi