<?php
class FileException extends Exception
{
public function getDetails()
{
switch ($this->code) {
case 0:
return "没有提供文件";
break;
case 1:
return "文件不存在";
break;
case 2:
return "不是一个文件";
break;
case 3:
return "文件不可写";
break;
case 4:
return "非法文件的操作模式";
break;
case 5:
return '数据写入失败';
break;
case 6:
return '文件不能被关闭';
break;
default:
return "非法";
break;
}
}
}
class WriteData
{
private $_message = '';
private $_fp;
public function __construct($filename = null, $mode = 'w')
{
$this->_message = "文件:{$filename} 模式:{$mode}";
if (empty($filename)) throw new FileException($this->_message, 0);
if (!file_exists($filename)) throw new FileException($this->_message, 1);
if (!is_file($filename)) throw new FileException($this->_message, 2);
if (!is_writable($filename)) throw new FileException($this->_message, 3);
if (!in_array($mode, array('w', 'w+', 'a', 'a++'))) throw new FileException($this->_message, 4);
$this->_fp = fopen($filename, $mode);
}
public function write($data)
{
if (@!fwrite($this->_fp, $data . PHP_EOL)) throw new FileException($this->_message . " 数据写入失败", 5);
}
public function close()
{
if ($this->_fp) {
if (@!fclose($this->_fp)) throw new FileException($this->_message, 6);
$this->_fp = null;
}
}
public function __destruct()
{
$this->close();
}
}
try {
//$fp = new WriteData('test.txt', 'w');//出现问题了 文件:test.txt 模式:w详细信息如下: 文件不存在
//$fp = new WriteData();//出现问题了 文件: 模式:w详细信息如下: 没有提供文件
$fp = new WriteData('test2.txt', 'w');
$fp->write('this is a test');
$fp->close();
echo "数据写入成功<hr/>";
} catch (FileException $e) {
echo "出现问题了 " . $e->getMessage() . "详细信息如下: " . $e->getDetails();
}
?>
[PHP错误异常]①③--测试文件写入异常处理类
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...