2016-10-03 9 views
0

私は現在開発中のWebアプリケーションでちょっと立ち往生しています。私はにtry/catchブロックと一緒に例外を使用することにしました。PHP5.6サーバで例外が捕捉されない

にもかかわらず、私はをローカルで開発しました。でした。PHP5サーバーにアプリケーションをアップロードしたばかりの場合、それらの例外はもうキャッチされません。代わりに、スクリプトの実行は致命的なエラーで停止します。私はPHP7の例外に関する大きな変更について何かを読んだことがありますが、私が見つけたすべての情報は非常に曖昧です。

スクリプトストップはそれほど問題ではありませんが、スクリプトはAJAX呼び出しで実行され、JSON形式のエラーメッセージを返さなければならないため、エラーを捕捉して「変更」することは非常に重要です。

メインファイル:

try { 

    if (!$this->validateNonce($this->postParams['upload-nonce'])) 
    throw new Exception('Upload failed because nonce could not be verified.'); 

    new FloImage(
     $this->postParams['basename'], 
     true, 
     $this->fileParams['uploadfile'] 
    ); 

} catch (Throwable $e) { 

    echo json_encode(array('error' => $e->getMessage())); 
    die(); 

} 

FloImage()チェックはいくつかの情報(名前、ファイルサイズなど)およびエラーの場合には、このように例外をスロー:

throw new Exception(_('My error message.')); 

ヘルプtry-catch-blockをPHP5で動作させる方法については、感謝します!事前にありがとうございます...

+0

何が致命的なエラーですか。 –

+0

私はいつも私が投げているエラーを取得します。致命的なエラー:私のメッセージ。 –

+0

'Throwable'はPHP7の基本インターフェースです - > [docs](http://php.net/manual/en/class.throwable.php)'例外 'が実装されていないのでPHP5のインターフェイス –

答えて

1

Throwableは、PHP7で導入されたインターフェイスです。 manualから、それは述べている:あなたがPHP5を使用して、コードを使用したい場合は

Throwable is the base interface for any object that can be thrown via a throw statement in PHP 7, including Error and Exception.

をので、あなたはException自体をキャッチする必要があります。私。

try { 
    throw new Exception('Some exception'); 
} 
catch (\Exception $e) // use the backslash to comply with namespaces 
{ 
    echo($e->getMessage()); 
    die(); 
} 

これは、スローされた例外がExceptionから派生している限り機能します。すなわち

class SpecialException extends Exception {} 

try { 
    throw new SpecialException('Some exception'); 
} 
catch (\Exception $e) // use the backslash to comply with namespaces 
{ 
    echo($e->getMessage()); 
    die(); 
} 
0

は、ユーザー定義のエラーハンドラ機能を作成するために使用されます。そのため、スクリプトの実行の先頭にエラーハンドラを設定してください。

スクリプトの末尾にrestore_error_handler()を置いて、前のエラーハンドラ機能を復元することを忘れないでください。

set_error_handler()でスクリプトをリカバリすることができます。

+0

エラーハンドラではなく、try/catchを使いたいと思います。とにかくあなたの提案をありがとう! –

関連する問題