Спустя 25 минут, 28 секунд (11.04.2011 - 15:58) Raito-kun написал(а):
как и везде. http://php.net/manual/en/language.exceptions.php
Спустя 9 минут, 28 секунд (11.04.2011 - 16:08) linker написал(а):
function mega_secure_func($kode = null)
{
if (is_null($kode))
throw new Exception('Fatal error. Kode is null.');
}
$a = null;
try
{
mega_secure_func($a);
}
catch(Exception $Except)
{
die($Except->getMessage());
}
Спустя 8 минут, 28 секунд (11.04.2011 - 16:16) twin написал(а):
Спустя 8 минут, 15 секунд (11.04.2011 - 16:24) Trianon написал(а):
twin
у тебя добрее, можно подумать...
у тебя добрее, можно подумать...

Спустя 2 минуты, 40 секунд (11.04.2011 - 16:27) twin написал(а):
У меня хоть русские буквы есть)))
UPD Кстати, когда писал, пересмотрел кучу материала. Если кто найдет более легкое описание, подскажите. Любопытно.
UPD Кстати, когда писал, пересмотрел кучу материала. Если кто найдет более легкое описание, подскажите. Любопытно.
Спустя 7 минут, 52 секунды (11.04.2011 - 16:35) Trianon написал(а):
Попытаюсь показать, почему ответ linker'а мне более симпатичен.
у него в основном потоке вычислений (довольно куцем, но тем не менее потоке) :
нет и намека на проблемы. И так и должно быть.
А у тебя что здесь
что здесь
вторая строка показывает, что ты заставляешь и себя и интерпретатор заботиться о проблемах в основном потоке.
В то время как главная идея исключений в том, чтобы о них вообще не думать в главной ветви алгоритма.
у него в основном потоке вычислений (довольно куцем, но тем не менее потоке) :
mega_secure_func($a);
нет и намека на проблемы. И так и должно быть.
А у тебя что здесь
if(!$f = fopen('dummy.txt', 'a+'))
throw new Exception('Не могу открыть файл dummy.txt');
что здесь
$f = fopen('dummy.txt', 'r')
or except('Не могу открыть файл dummy.txt');
вторая строка показывает, что ты заставляешь и себя и интерпретатор заботиться о проблемах в основном потоке.
В то время как главная идея исключений в том, чтобы о них вообще не думать в главной ветви алгоритма.
Спустя 11 минут, 13 секунд (11.04.2011 - 16:46) twin написал(а):
Ну это из той же оперы, что оффтоп по FAQ. Я там промолчал, потому что были двойственные чувства.
Разумеется обертки куда как предпочтительнее, по mysql_query кстати я давным давно предложил такую штуку.
Но с другой стороны для этого нужно созреть, сам механизм обработки ошибок легче понять, когда она в основном потоке.
Однако вот тут немного все же не согласен. Вот тут
Разумеется обертки куда как предпочтительнее, по mysql_query кстати я давным давно предложил такую штуку.
Но с другой стороны для этого нужно созреть, сам механизм обработки ошибок легче понять, когда она в основном потоке.
Однако вот тут немного все же не согласен. Вот тут
$f = fopen('dummy.txt', 'r')функция except() и является своего рода оберткой, которая при желании слогирует ошибку или просто запретит вывод в поток. Больше в неё передать нечего, тут нет текста запроса, как в случае с SQL.
or except('Не могу открыть файл dummy.txt');
Спустя 3 минуты, 17 секунд (11.04.2011 - 16:49) Trianon написал(а):
twin
Здесь должно остаться что-то вроде $f = open_file('dummy.txt', 'r');
И всё.
Остальное уже отвлечение от сути решения.
в самой open_file может сработатьбомба throw, except , die() или еще чего-нибудь, и как-то судьбу вытянуть.
Основной код беспокоиться не должон.
Здесь должно остаться что-то вроде $f = open_file('dummy.txt', 'r');
И всё.
Остальное уже отвлечение от сути решения.
в самой open_file может сработать
Основной код беспокоиться не должон.
Спустя 24 минуты, 28 секунд (11.04.2011 - 17:14) Raito-kun написал(а):
Цитата |
У меня хоть русские буквы есть))) |
в моей ссылке en на ru поменять и тоже появятся)))
Спустя 10 минут, 32 секунды (11.04.2011 - 17:24) twin написал(а):
Цитата |
Здесь должно остаться что-то вроде $f = open_file('dummy.txt', 'r'); И всё. |
Как то не очень мне это по душе... Писать обертку под каждую функцию... Проще же использовать одну универсальную. Да и основной синтаксис не страдает. Кто его знает, что там в open_file() творится... Неуютно как то.
Спустя 11 минут, 41 секунда (11.04.2011 - 17:36) Trianon написал(а):
Под каждую, с возможными траблами которой не хочется возиться среди пира.
К счастью, таковых в реальной практике не то что бы очень много...
Но ведь смысл функций и состоит в том, чтобы писать вызовы чаще, чем определения.
К счастью, таковых в реальной практике не то что бы очень много...
Но ведь смысл функций и состоит в том, чтобы писать вызовы чаще, чем определения.
Спустя 14 часов, 56 минут, 43 секунды (12.04.2011 - 08:33) linker написал(а):
Действительно, в основном потоке лучше вообще не использовать исключения. Они более необходимы когда происходят вызовы функций, методов, когда основной поток не "контролирует" выполнение кода внутри них. Именно для таких вызовов используются исключения. В блок try {} заносятся вызовы функций, которые могут сгенерировать исключение, в catch(){} мы пишем код, который будет реагировать на них.
Спустя 4 дня, 8 часов, 44 минуты, 55 секунд (16.04.2011 - 17:18) twin написал(а):
Вот решил я пересмотреть свои взгляды на компановку. Прислушаться к советам и не делать диагностики в основном потоке. И тут же этот метод потерпел полное фиаско. Как с эксепшенами, так и с or die.
Вся беда в том, что по схеме с обертками мы получаем файл и номер строки именно обертки, а не виновника злоключений.
Так что тут скорее всего интереснее использовать компромиссы. В обертках на часто используемые функции юзать debug_backtrace(); и весь остальной джентельменский набор. А с функциями попроще, но требующих логирования не брезговать и в потоке прописать пару строк по моей схеме.
А вот эксепшены тут вообще выпадают. Как громоздкое, тормозное, мутное и вообще ненужное явление.
Вся беда в том, что по схеме с обертками мы получаем файл и номер строки именно обертки, а не виновника злоключений.
Так что тут скорее всего интереснее использовать компромиссы. В обертках на часто используемые функции юзать debug_backtrace(); и весь остальной джентельменский набор. А с функциями попроще, но требующих логирования не брезговать и в потоке прописать пару строк по моей схеме.
А вот эксепшены тут вообще выпадают. Как громоздкое, тормозное, мутное и вообще ненужное явление.
Спустя 2 дня, 20 часов, 54 минуты, 28 секунд (19.04.2011 - 14:12) linker написал(а):
twin
tryеще афигенно кохана отдает трейсы, я в своём фрейме тоже подобное реализовал.
{
...
}
catch(Exception $e)
{
echo $e->getTraceAsString();
}
Спустя 7 часов, 3 минуты, 50 секунд (19.04.2011 - 21:16) twin написал(а):
Да, со стеком можно помудрить - факт)
Займусь на досуге, спс. Как то я ему особого значения не придавал, зря как видимо.
Займусь на досуге, спс. Как то я ему особого значения не придавал, зря как видимо.
Спустя 13 часов, 10 минут, 40 секунд (20.04.2011 - 10:27) linker написал(а):
Вот мой эксепшен (в разработке пока, но все же) с трейсами
Спустя 10 минут, 40 секунд (20.04.2011 - 10:37) kirik написал(а):
Красивенько
