weregod
unserializer
require отсутствующего файла (E_ERROR) можно ловить?Автор оригинала: AmdY
по такому, как пишу require вместо include и выволнение дальше не возможно: недоступен файл

require отсутствующего файла (E_ERROR) можно ловить?Автор оригинала: AmdY
по такому, как пишу require вместо include и выволнение дальше не возможно: недоступен файл
Я даже рядом с гуру пахапе не бегал никогда... , но помоему мнению исключения это как раз возможность поддерживать свой код абсолютно в жестких рамках, то есть понятно, что логика загрузки изображения в том месте где выпишите загрузку xls файла это ваша ошибка как программиста, что не возможность взять из папки у которой чмод не установлен это изображение - это ошибка программы, а вот исключением будет на мой скромный взгляд, если вы попробуете читануть джепег и не увидите там его заголовков, а наткнетесь к примеру на зловредный код какой-нибудь, обработаете и удалите это изображение с сервера - вот какое-то такое у меня мнение.Автор оригинала: sverel
Во.во. Я давно уже об этом. Логику к логике, ошибки к ошибкам.
А исключения - я пока вообще не понял куда.
$img = imageCreateFromJpeg($someFile);
if ( ! is_resource($img)) {
// применяем меры.
}
// первая ф-ция проверяет расширение или mime-type.
// Вторая пытается прочекать заголовки jpg-файла.
if ( ! image::isImage($file) || ! image::isRealImage($file)) {
echo 'Не корректный файл';
}
try {
if ( ! isImage($file)) {
echo 'Не корректный файл';
}
if ( ! isRealImage) {
throw new ExceptionImageIsNotRealImage();
}
} catch (ExceptionImageIsNotRealImage $e) {
echo 'Битый jpg';
}
// и ещё где-то далеко должен быть создан класс ExceptionImageIsNotRealImage
try {
uploadFile();
} catch () {
...
}
function uploadFile()
{
...
isImage();
...
}
function isImage()
{
...
throw new Exception();
...
}
$result = uploadFile();
if ( ! $result) {
echo 'Какая-то ошибка';
}
function uploadFile()
{
...
if ( ! isImage()) {
return false;
}
...
}
function isImage()
{
...
return false;
...
}
throw new Exception($type = 'someType');
....
catch {
switch ($e->type) {
case 'someType'.....
}
}
ну тут уже минусы вылазят может? вы ведь знаете как безбожно тратится место внутри классов на всякие сеттеры геттеры и иже сними конструкторы...Но теперь не понятно, зачем для каждого типа ошибок плодить отдельный класс ExceptionSomeType?
Ведь было бы проще:
throw new Exception($type = 'someType');
....
catch {
switch ($e->type) {
case 'someType'.....
}
}
Мы же вроде договорились, что Exception нужен ТОЛЬКО для того что бы ПРОБРОСИТЬ, вместо того что бы плодить if/else. А логику, наверное, надо уже писать в блоке catch {}Автор оригинала: craz
ну тут уже минусы вылазят может? вы ведь знаете как безбожно тратится место внутри классов на всякие сеттеры геттеры и иже сними конструкторы...
вы не скриптовыми языками занимались? там блин это как то все более понятно было, не будешь писать обработку исключений, программа будет падать без вывода вменяемого текста об ошибке, тут что-то типа этого, только тут ничего не падает и ничего супер плохого не случиться если вы не обработаете просто скрипт умрет,Автор оригинала: sverel
Мы же вроде договорились, что Exception нужен ТОЛЬКО для того что бы ПРОБРОСИТЬ, вместо того что бы плодить if/else. А логику, наверное, надо уже писать в блоке catch {}
-~{}~ 10.06.10 13:59:
иначе логика получится реально разбросанной по нескольким местам.
в pl/sql при объявление переменных экзепшен объявляется там же...throw new Exception($type = 'someType');
....
catch {
switch ($e->type) {
case 'someType'.....
}
}
declare
my_ex Exception;
begin
raise my_ex;
exception when my_ex then
raise_application_error(-20182, 'Exception my_ex');
end;
Не знаю, вот я бы не стал так делать. Мне кажется, exception - это для исключительных ситуаций типа падения базы или неправильного файла. А то, что ты описал, это логика приложения. Создавать пользователя по exception, это странновато как-то имхоЕсли не найден пользователь в базе, то я могу поймать этот exception раньше и создать пользователя, выведу ему страницу приветствия
Кому как. Подставляйте ведро - вот вам балалайка. Достался нам проект на переделку. Написали и начали запускать - гора 500к в логе. Оппа! Cтрах и ужас - база была в неконсистентном состоянии. Коммент есть, а его автора нет, и т.д. В итоге собственный наследник ActiveRecord, с перекрытым getById():Автор оригинала: varan
Не знаю, вот я бы не стал так делать. Мне кажется, exception - это для исключительных ситуаций типа падения базы или неправильного файла. А то, что ты описал, это логика приложения. Создавать пользователя по exception, это странновато как-то имхо
function getById($id)
{
try
{
return parent::getById($id);
}
catch(RecordNotFoundException $e)
{
return new DeletedUser();
}
}