Умышленно не ловить исключения - PullRequest
2 голосов
/ 25 марта 2019

Итак, у меня есть этот маленький кусочек кода

public function getPrices($debtorId)
{
    $priceListId = $this->getPriceListId($debtorId);
    if(!$priceListId){
        throw new \Exception('No list found for this customer');
    }

    // doing some operations here that require $priceListId

    return $prices;

До сих пор я делал бы что-то вроде

if(!$priceListId) exit('No list found for this customer');

Разница в том, что я мог поймать исключение если я хочу , хотя это невозможно с оператором выхода.

Однако в этом случае я хочу, чтобы моя программа закрывалась.Но моя IDE предупреждает меня, что я не ловлю исключения.Итак, должен ли я действительно сделать это сейчас:

try {
    $prices = $priceHandler->getPrices($debtorId);
} catch(Exception $e) {
    exit($e->getMessage());
}

Последнее кажется мне ненужным и фактически ухудшающим качество кода.Итак: Допустимо ли преднамеренно НЕ отлавливать некоторые исключения? Или я должен вообще избавиться от исключения и просто использовать старый добрый exit?

Я пытался найти этот вопрос,но я получил результаты только о тех людях, у которых были технические проблемы с неработающим try / catch.

1 Ответ

3 голосов
/ 25 марта 2019

Нет, вы не должны ловить там свое исключение, если не хотите.

Даже если вы хотите поймать его, он может легко оказаться где-то в другом месте, так что вам определенно не нужно оборачивать это в попытку.

Вместо этого вы должны сообщить IDE, что этот метод должен вызывать исключение:

/**
 * @throws \Exception
 */
public function getPrices($debtorId)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...