На самом деле существует различие между
throw new CustomException(ex);
и
throw;
, второе сохранит данные стека.
, Но иногда Вы хотите сделать Исключение более "дружественным" по отношению к Вашему домену приложения, вместо того, чтобы позволить DatabaseException достигнуть Вашего GUI, Вы повысите свое пользовательское исключение, которое содержит исходное исключение.
, Например:
try
{
}
catch (SqlException ex)
{
switch (ex.Number) {
case 17:
case 4060:
case 18456:
throw new InvalidDatabaseConnectionException("The database does not exists or cannot be reached using the supplied connection settings.", ex);
case 547:
throw new CouldNotDeleteException("There is a another object still using this object, therefore it cannot be deleted.", ex);
default:
throw new UnexpectedDatabaseErrorException("There was an unexpected error from the database.", ex);
}
}
Используйте preg _ grep ()
:
$matches = preg_grep('/al/', $streetNames);
Примечание: Этот метод, подобный вашему, будет грубым силовым поиском. Если вы ищете огромный список имен (сотни тысяч) или ищете огромное количество раз, то вам может понадобиться что-то лучшее. Однако для небольших наборов данных это нормально.
-121--4617323-Пакеты Java не вложены, они плоские. Любое кажущееся вложение - не более чем соглашение об именовании.
Например, пакет com.company.project.db
не имеет никакого отношения к com.company.project
или com.company.project.db.x
. Код в com.company.project.db
не имеет большего доступа к коду в com.company.project.db.x
, чем код в a.b.c
.
2018: Да, : первый
и : eq (0)
возвращают тот же результат, хотя разница в производительности будет незначительной и, возможно, даже тривиальной по 2018.
2010: Хороший вопрос и великий пост. Я проверил это некоторое время назад и не мог вспомнить точный результат. Я очень рад, что нашел это, потому что это именно то, что я искал.
Я бы предположил, что причина : сначала
и : eq (0)
, будучи гораздо медленнее, скорее всего, связана с производительностью синтаксического анализа. Отсутствие этих параметров позволяет ядру jQuery использовать собственные функции getElemiveByTagName
и getElemiveByClassName
.
Никаких сюрпризов i.t.o. элемент DOM является самым быстрым в доступе. Перенос элемента DOM с jQuery в цикл for не обязательно окажет неблагоприятное влияние на производительность, поскольку jQuery использует свойство expando для кэширования.
Однако было бы интересно посмотреть, как get (0)
сравнивает с доступом к элементу DOM и как его обертка jQuery соотносится с eq (0)
и остальными результатами.
Да, они эквивалентны.
Нет, вряд ли они будут существенно отличаться (все остальное - это микрооптимизация).