2013-07-11 2 views
4

Я использую службу SaaS и службу регистрации исключений, называемую Rollbar. В моем коде у меня есть статический объект Rollbar, который я могу использовать для сообщения об исключениях для службы.Могу ли я создать исключение, не бросая его?

Например:

try { 
    ... 
    throw new SomeException(); 
    ... 
} catch (SomeException $e) { 
    Rollbar::report_exception($e); 
} 

Мой вопрос: Могу ли я создать экземпляр исключения, не бросать его, как будто это любой другой нормальный объект, и есть какие-либо оговорки?

Я хотел бы сделать что-то вроде этого:

if($api_response_ok) { 
    // Do some stuff 
    ... 
} else { 
    Rollbar::report_exception(new ApiException($api_error_msg)); 
} 

// Script execution continues... 
+1

В чем причина нисходящего потока? Я могу улучшить этот вопрос. – Alex

+1

Мне было интересно то же самое - мой ответ также был опущен. Вот, у меня есть это upvote –

+0

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

ответ

7

Да, исключение так же, как и любой другой объект.

1

Исключения - это только объекты, которые расширяют класс исключений. Они будут разорвать выполнение скрипта только при их броске.

$exception = new Exception('Die'); 
//Does not exit here 
throw $exception; 
//Will exit here 
+2

Не понимаю, почему вы получили downvoted .. – Robert

+1

Mine не был нисходящим, но я предполагаю, что это потому, что бросание исключения не «выходит» из сценария или «нарушает выполнение скрипта», само по себе - скорее , это заставляет PHP прекратить выполнение кода в текущей области и искать в стеке стека соответствующий блок 'catch'. – Alex

+0

@Alex, это немного гиперкритическое. Я думаю, что Джордж имеет в виду контекст сценария, а не всю программу. – Edward

Смежные вопросы