我正在尝试在我的新 PHP 项目中实现自己的异常处理,我还没有遇到任何错误,但我担心我的架构不正确,让我告诉你我的意思。
我目前正在实现一个系统,可以处理某些类型的文件,编写它们,删除它们,创建它们等等,当然,我需要注意很多事情,所以很多事情都可能出错,所以我做了以下结构,但我觉得我重复自己太多了。
所以,我把它作为我的主要异常类,我的所有自定义异常都将扩展:
abstract class PickleException extends Exception implements Throwable
{
abstract protected function handle () : void;
}
我做了以下两个例外,目前做同样的事情
class DuplicateFileException extends PickleException
{
public function handle() : void
{
echo $this->getMessage();
}
}
class InvalidCreationDirectoryException extends PickleException
{
public function handle() : void
{
echo $this->getMessage();
}
}
现在,让我展示一下文件系统是如何组织的。
FileManager -- Interface
FileSystem -- Abstract class (Parent)
PHPManager -- Class (Child)
YamlManager -- Class (Child)
XMLManager -- Class (Child)
现在,我知道我可以在这些类中的任何一个中抛出新的异常,但问题取决于我在哪里捕捉它们?到目前为止,我有这样的东西......
abstract class FileSystem implements FileManager
{
/**
* Creates an empty file based on the path, name and extension
* given.
*
* @param string $path
* @param string $name
* @param string $extension
* @throws DuplicateFileException
* @throws InvalidCreationDirectoryException
* @return void
*/
final function makeEmptyFile (string $path, string $name, string $extension) : void
{
$file = "$path/$name.$extension";
if (!file_exists($path)) {
if (!mkdir($path, 0777, true)) {
throw new InvalidCreationDirectoryException("Error: Impossible to create directory");
}
}
if (file_exists($file)) {
throw new DuplicateFileException("Warning: File already exists, aborting");
}
touch($file);
}
}
换句话说。捕获我抛出的所有异常的正确位置在哪里?
开心每一天1111