我正在写一些课程,想知道如何正确处理不成功的场景。例如,一个文件上传类,它作为参数接受 $_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?
如果重要的话 - 类将是开源的,可供所有人使用,所以从这方面来说,我也想让它们标准化、对开发人员友好并且尽可能容易地插入现有软件。