私のクラスのユーザーが私が意図していなかったことを悪用したときに、PHPクラスに致命的な、捕捉不能なエラーを投げられるようにしたいと思います。私は彼/彼女がキャッチ条項で回復できるようにしたくありません。 私はtrigger_error
について知っていますが、警告または通知のみを出すことができます。PHP:トリガ致命的なエラー?
答えて
E_USER_ERRORは、適切な定数です。
trigger_error("Fatal error", E_USER_ERROR);
マニュアルページの最初の例も参照してください。
「文書を読むのが好きではない人にとって便利な」と言った男は、マニュアルページの最初の例です。 –
debug_print_backtrace();
trigger_error("As much information as you can provide, please", E_USER_ERROR);
exit();
exit()は、PHPスクリプトを完全に終了します。より多くの情報をユーザーまたは開発者にエラーについて提供することができます。エラーコードはpasséです。
編集:E_USER_ERRORを使用すると、スクリプトを終了する必要があります。したがって、trigger_error()の前にdebug_print_backtrace()を移動してください。
絶対に、ダイを追加してください。または出口。このようなエラーをスローした後のコマンドは、ほぼ100%確実である唯一の方法です。それから逃げる唯一の方法(php.iniの無効化された関数を期待する)は[runkit_function_remove](http://php.net/manual/en/function.runkit-function-remove.php) –
注:カスタムエラーハンドラを使用している場合は、エラーハンドラはfalseを返していない限り死ぬ/ E_USER_ERROR
は/終了を停止しません(set_error_handler参照)
一言で言えば:E_USER_ERROR
が扱われている場合、カスタムエラーハンドラを効果的に判断し致命的なものとして
です。別の場所に書いたように、致命的なエラーが発生する可能性があります。 if($ isTestMode == 1){ eval( "noSuchFunction();"); } このメソッドは常に動作します。 –
これは本当に私を助けてくれたブラッドさん、私はカスタムエラーハンドラ機能を使用しています。 「エラーを処理していましたが」フラグE_USER_ERRORでトリガしましたが、エラーハンドラ関数からfalseを返すまで「致命的な」エラーが発生していませんでした。 – dading84
- 1. PHP致命的なエラーが
- 2. 致命的なエラーPHP、Pear?
- 3. PHPの致命的なエラー
- 4. PHPの致命的なエラー
- 5. PHPの致命的なエラー
- 6. PHPの致命的なエラー - キャッチできる致命的なエラー:クラス
- 7. PHPの致命的なエラー:クラスのFacebook "
- 8. PHP致命的なエラー:いいえ
- 9. Laravel Trait not found PHP致命的なエラー
- 10. Twilio PHPの致命的なエラー
- 11. PHPの致命的なエラー:クラス '雄弁'
- 12. PHP PDOは、致命的なエラー
- 13. PHPのノーマ:致命的なエラー:クラス「ノーマ」
- 14. キャッチできる致命的なエラー - PHP
- 15. 致命的なエラー..宣言が... PHP
- 16. 致命的なエラー:PHP、PDO、セッション、
- 17. PHP:致命的なエラー:抽象クラスに
- 18. PHPとSwift:password_hash()の致命的なエラー
- 19. PHP致命的なエラー、MongoDB、カーソル
- 20. PHP 7 simpleXMLの致命的なエラー
- 21. Fzaninotto偽物PHP致命的なエラー
- 22. PHP - 致命的なエラー:クラス 'PHPUnit_Framework_Test
- 23. PHP:フォームPOST後の致命的なエラー
- 24. PHP致命的なエラー:インターフェイス 'JsonSerializable'
- 25. PHP致命的なエラー/ Spotify Web API
- 26. 致命的なエラー:
- 27. 致命的なエラー
- 28. 致命的なエラー:
- 29. 致命的なエラー:
- 30. phpでは致命的ではなく致命的ではないエラー?
なぜ迷惑ですか?あなたのクラスを実装している人は誰ですか:1.プログラマーです。 2.ソースにアクセスできます。 3. 'trigger_error()'呼び出しを削除することができます。 – Sammitch
@Sammitch:私は私の意図を明確にしたい。私は自分のコードを使っている人に、自分がやっていることは、どうやってそれを使うことを意図しているのか分からないようにしたいと思っています。例外を投げる私には、「この未定義の振る舞いを扱う」というメッセージが送信されます。私はメッセージを送信したい:「そうしないで、代わりにこのようにしてください」 – DudeOnRock
サンプルライブラリ。たとえば、条件が真でない場合は、絶対に何かをしないでください。 (文書を読むのが好きでない人には役に立ちます:P) – bwoebi