Миграция PHP4 на 5 и обработка исключений - PullRequest
0 голосов
/ 20 января 2011

Я перевожу унаследованное приложение с PHP4 на PHP5.2, и одна из библиотек, которую он использует, теперь генерирует исключения, которые вызывают сбой сценариев.Правильно ли я считаю, что в PHP4 это исключение не будет обрабатываться таким же образом (то есть, совсем не будет), и поэтому сценарий будет просто продолжаться с того момента, когда исключение выдается?Есть ли способ восстановить это поведение под PHP5 (в идеале только для страниц, где включена библиотека)?Исключением является исключение com_exception из библиотеки, работающей с Excel.

Ответы [ 2 ]

1 голос
/ 20 января 2011

Я перепробовал все двоичные дистрибутивы PHP для Windows, которые я нашел с 5.1.2 по 5.1.3 (также cvs), и мне пришлось обработать исключение.

Моя установка PHP - типичная, описанная'install.txt' пакета PHP.Единственное изменение, которое я сделал в php.ini (кроме doc_root) - это com.allow_dcom = true.

, поэтому вам придется использовать

catch( com_exception $e )
{
print( $e->__toString( ) );
}
0 голосов
/ 20 января 2011

PHP 4 вообще не поддерживает исключения. Синтаксис для выдачи исключения был бы неверным синтаксисом в PHP 4. См. http://uk3.php.net/manual/en/language.exceptions.php

Было бы удобно, если бы мне сказали немного больше о классе, который выбрасывает исключение.

Я предполагаю, что в самом классе или в том способе, которым вы его называете, есть ошибка, которая запускалась все время и игнорировалась, но теперь вызывает это исключение.

Эта страница посвящена изменениям в PHP5 и дает некоторое представление о работе com_exception: http://devzone.zend.com/article/762

Цитировать:

PHP 5 представляет структурированную обработку исключений (try, catch () и throw ()), и это позволяет нам предоставлять основные исключения COM в PHP с помощью встроенного класса com_exception. Если вы хотите отлавливать ошибки в своих скриптах, вы можете написать код, подобный следующему:

<?php
$com = new COM("...");
try {
  $com->call_a_method();
}
catch (com_exception $e) {
  print $e . "\n";
}
?>

Надеюсь, приведенный выше фрагмент кода поможет вам. Распечатка сообщения об ошибке может (должна) показать больше о том, что именно идет не так, что должно помочь вам решить, куда идти дальше.

Возможно, конечно, что используемый вами класс Excel также может нуждаться в обновлении; если оно было частью вашего старого приложения на PHP4, то, вероятно, это довольно старый класс; может быть доступна более новая его версия, и если вы нашли ошибку в классе, то новая версия может с этим справиться.

...