Use dedicated exceptions if unlinking failed for reasons other than the

file not existing
This commit is contained in:
Joshua Ramon Enslin 2025-03-25 14:57:29 +01:00
parent b9d82d672a
commit 5433811176
Signed by: jrenslin
GPG Key ID: 46016F84501B70AE
3 changed files with 45 additions and 1 deletions

View File

@ -0,0 +1,18 @@
<?PHP
declare(strict_types = 1);
/**
* Reports a failure to create a new directory.
*/
final class MDFailedToDeleteFile extends Exception {
/**
* Error message.
*
* @return string
*/
public function errorMessage() {
//error message
return 'Failed to delete file';
}
}

View File

@ -0,0 +1,18 @@
<?PHP
declare(strict_types = 1);
/**
* Reports a failure due to insufficient permissions in the file system.
*/
final class MDFilePermissionsException extends Exception {
/**
* Error message.
*
* @return string
*/
public function errorMessage() {
//error message
return 'Insufficient file system permissions';
}
}

View File

@ -110,7 +110,15 @@ final class MD_STD {
public static function unlink(string $filename):void {
if (\unlink($filename) === false) {
throw new MDFileDoesNotExist("Failed to delete: $filename");
if (!\is_file($filename)) {
throw new MDFileDoesNotExist("Failed to delete $filename, it did not exist");
}
else if (!\is_writable(dirname($filename))) {
throw new MDFilePermissionsException("Failed to delete $filename");
}
else {
throw new MDFailedToDeleteFile("Failed to delete $filename");
}
}
}