Исключения

Tee7even

Nukkit Coders Team
Вопрос будет не о разработке плагинов конкретно под Nukkit или на Java, а скорее о принципах ООП. Поскольку на Nukkit я решил ещё не переходить (до версии 1.0 эдак), то пример будет на PHP, для PM.
Вот имеется у меня следующий код:
PHP:
public function setPrivateZoneOwner(string $zoneName, string $playerName)
{
	$prepare = $this->database->prepare("UPDATE PrivateZones SET owner = :owner WHERE name = :name");
	if(!$prepare)
	{
		throw new DatabaseException($this->database->lastErrorMsg());
	}

	$prepare->bindValue(":name", \SQLite3::escapeString($zoneName), SQLITE3_TEXT);
	$prepare->bindValue(":owner", \SQLite3::escapeString($playerName), SQLITE3_TEXT);
   
	if(!$prepare->execute())
	{
		throw new DatabaseException($this->database->lastErrorMsg());
	}
}
Тут можно видеть, что на каждый метод, который может возвращать false вместо результата (1, 2), стоит проверка и выбрасывается исключение, если дело обстоит не так, как нам надо. Таким образом может образовываться по несколько штук таких проверок в одном методе. Внимание, вопрос: это нормально или можно придумать что-либо поэлегантнее? Авось специфика PHP, в котором методы возвращают false? :confused:
 

fromgate

Administrator
Я почти вообще ничего не знаю о php... ;)

Но в ситуации с использованием Exception'ов ничего исключительного не вижу. Это нормально и удобно. Т.е. в Java тоже они часто используются.

В принципе, если не нужно обрабатывать какие-то конкретные ситуаций, то думаю можно вполне обойтись возвратом функцей false вместо этих исключеий. Главное чтобы при обращении к этой функции, учитывалось, что она может вернуть "false".
 

Tee7even

Nukkit Coders Team
Я почти вообще ничего не знаю о php... ;)

Но в ситуации с использованием Exception'ов ничего исключительного не вижу. Это нормально и удобно. Т.е. в Java тоже они часто используются.

В принципе, если не нужно обрабатывать какие-то конкретные ситуаций, то думаю можно вполне обойтись возвратом функцей false вместо этих исключеий. Главное чтобы при обращении к этой функции, учитывалось, что она может вернуть "false".
Я о том, что проверок, выбрасывающих исключения, в одном методе может набраться несколько штук. Но я разобрался уже, это скорее беда PHP, где каждый второй метод может вернуть что ему вздумается вместо результата, чем ознаменует ошибку.
 
Top