Slastik
Новичок
обработка ошибок
думал как реализовать обработку ошибок в своем проекте.
пришел к следующему решению :
хоть и до конца не понимаю чем исключения так хороши, но решил использовать их, так как все их хвалят не нахвалятся )
выделил три типа ошибок
ошибки работы с базой (допустим ошибки подключения к базе)
ошибки пхп (допустим открытие несуществуещего файла)
ошибки пользователя (допустим неверный логин или пароль)
решил создать три класа наследника от Exception
так же хотел сделать два режима, с отладкой и без
что бы когда отладка включена в конфиге, программист получает максимум информации об ошибке, а когда нет пользователь видит безобидное сообщение.
на примере класа обработки ошибок работы с базой покажу что у меня получилось:
пример использования :
правда есть одна проблема, не знаю как передать сообщение
вызваное например ошибкой открытия не существуещего файла в свой обработчик, для базы есть
функция mysql_error() а как быть с пхп
и еще @ собака мне не нравится, но я думаю отключить отображение ошибок и ее убрать, но это уже когда проект будет запущен в эксплуатацию
ну вот собственно хотелось бы услышать ваше мнение о таком изврате
не придумал ли я какой то кривой велосипед?
думал как реализовать обработку ошибок в своем проекте.
пришел к следующему решению :
хоть и до конца не понимаю чем исключения так хороши, но решил использовать их, так как все их хвалят не нахвалятся )
выделил три типа ошибок
ошибки работы с базой (допустим ошибки подключения к базе)
ошибки пхп (допустим открытие несуществуещего файла)
ошибки пользователя (допустим неверный логин или пароль)
решил создать три класа наследника от Exception
так же хотел сделать два режима, с отладкой и без
что бы когда отладка включена в конфиге, программист получает максимум информации об ошибке, а когда нет пользователь видит безобидное сообщение.
на примере класа обработки ошибок работы с базой покажу что у меня получилось:
PHP:
class dbException extends Exception
{
private $errMessage;
public function __construct($errMessage)
{
parent::__construct();
$this->errMessage = $errMessage;
}
public function getInfo()
{
if (DEBUG == 0)
{
// файл с описанием ошибок
require("errors.php");
echo $errMessage[$this->errMessage];
}
elseif (DEBUG == 1)
{
echo 'developers mode <br/>';
echo '<hr>';
echo mysql_error();
echo '<br/> File Name: <b>'.$this->getFile().'</b><br/>
Error in line: <b>'.$this->getLine().'</b><br/>Trace path: <b>'.
$this->getTraceAsString().'<b>'.'<br/>';
}
}
}
пример использования :
PHP:
try
{
@$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$link)
{
throw new dbException("NoConnection");
}
}
catch (dbException $e)
{
$e->getInfo();
}
вызваное например ошибкой открытия не существуещего файла в свой обработчик, для базы есть
функция mysql_error() а как быть с пхп
и еще @ собака мне не нравится, но я думаю отключить отображение ошибок и ее убрать, но это уже когда проект будет запущен в эксплуатацию
ну вот собственно хотелось бы услышать ваше мнение о таком изврате
не придумал ли я какой то кривой велосипед?
