Главная /
PHP: ООП и классы /
Был разработан специализированный класс исключений, расширяющий информативность метода getCode(): <?php class eMyException extends Exception { function getCode() {return "Код исключения: ".$this->code;} } try {throw new eMyException("исключение");}
Был разработан специализированный класс исключений, расширяющий информативность метода getCode()
:
<?php
class eMyException extends Exception
{
function getCode()
{return "Код исключения: ".$this->code;}
}
try {throw new eMyException("исключение");}
catch (Exception $e){echo $e->getCode();}
?>
Ожидалось, что результатом выполнения сценария станет строка "Код исключения: 0", однако в процессе выполнения сценария была сгенерирована фатальная ошибка. Из приведенных высказываний укажите высказывание, раскрывающее причину некорректности работы программы:
вопрос
Правильный ответ:
в производном классе не был определен конструктор
класс
Exception
не содержит поля code
типом аргумента блока
catch
следует указать производный класс, а не родительский
метод
getCode()
переопределить нельзя, т.к. он определен как final
Сложность вопроса
91
Сложность курса: PHP: ООП и классы
88
Оценить вопрос
Комментарии:
Аноним
Спасибо за сайт
20 фев 2016
Другие ответы на вопросы из темы программирование интуит.
- # Для расширения функциональности класса cCalculation был разработан класс cCalculationLogged. Конструктор нового класса не изменяет способ генерации значений полей родителя при создании объекта, поэтому было принято решение повторно использовать старый код. Содержимое файла class.Calculation.php: <?php class cCalculation { /*базовая функциональность*/ public $Fed = TRUE; protected $DataPath = ""; private $CalcId; function __construct($_DataPath,$_CalcId) { if($_DataPath=="") { $this->Fed = FALSE; } else $this->DataPath = $_DataPath; $this->CalcId = $_CalcId; } } class cCalculationLogged extends cCalculation { /*расширенная функциональность*/ protected $LogPath; function __construct($_DataPath,$_CalcId,$_LogPath) { ___; $this->LogPath = $_LogPath; } } ?> Среди приведенных ниже фрагментов укажите все варианты кода, подстановка которого вместо знаков подчеркивания решит поставленную задачу:
- # Сценарий PHP содержит следующий код: <?php class cBase { protected function f() {echo "base";} public function g() {$this->f();} } class cDerivative extends cBase { function g() {echo "derivative";} } $der = new cDerivative; $der->g(); ?> Укажите результат выполнения сценария:
- # Сценарий PHP содержит следующий код: <?php class Foo { function __construct(){echo "Foo "; } function foo();{return 1;} } abstract class Bar extends Foo { function __construct(){echo "Bar "; } abstract function foo(); } function __autoload($_class) { echo " !".$_class." ";} $a = new Foo; $b = new Bar; $c = new Foobar; ?> Укажите результат выполнения сценария:
- # Сценарий PHP содержит следующий код: <?php function a(){echo "c "; b(); echo "f ";} function b(){echo "d "; throw new Exception("test"); echo "e ";} echo "a "; try { echo "b "; a(); echo "g "; } catch (Exception $e) {echo "h ";} echo "i "; ?> Укажите результат выполнения сценария:
- # Был разработан специализированный класс исключений, расширяющий информативность метода getMessage(): <?php class eFooException extends Exception { function getMessage() {return "Произошла ошибка! Подробности: ".$this->message;} } try {throw new eFooException("тест");} catch (Exception $e){echo $e->getMessage();} ?> Ожидалось, что результатом выполнения сценария станет строка "Произошла ошибка! Подробности: тест", однако в процессе выполнения сценария была сгенерирована фатальная ошибка. Из приведенных высказываний укажите высказывание, раскрывающее причину некорректности работы программы: