Document
サイトについて
リンクフリー
個人ご利用の場合はリンクフリーです。備忘録等に各種ドキュメントへのリンク。ご自由にご利用ください。
転載
出典元表記(当社名orリンク記載)の際は転載等ご自由にご利用ください。
ライセンス
このページの内容の一部は、Google が作成、提供しているコンテンツをベースに変更・複製したもので、クリエイティブ・コモンズの表 示 3.0 ライセンスに記載の条件に従って使用しています。
きょうのことば
" 今度OOしようだとか。今度XXするよとか…。いい加減な口約束だよ。「今度」と「おばけ」は出たためしがない。 "(Murata 2010)
PHP再入門13 |
エラー制御演算子とは エラー制御演算子とはアット「@」で表され、エラーの出力を制御する事のできる演算子です。PHPの式の前につけるとその式で発生したエラーは無視され出力されません。 PHPでは親切にエラーメッセージを出力してくれますが、この出力が逆に邪魔になる時があります。そのような時に@演算子でエラーの制御をすると便利です。 主にはファイルやデータベースが開けなかった場合にエラーが出てしまうのを回避するためにファイル操作やデータベース接続などで使われているようです。 存在しないファイルを開こうとするとWarningエラーが発生しますが、エラー制御演算子「@」を使えばエラーは出力されません。 @fopen("存在しないファイル"); 未定義の変数を呼び出すとこれまたNoticeエラーという普通では出力されないエラーがPHP内部で発生することになりますが、これもエラー制御演算子「@」で回避できます。 @$undefined; // 未定義の変数 Noticeエラーはデフォルトの設定では出力されないため、意識する事は少ないかもしれませんがPHP内部ではエラーが発生しているので一応覚えておいて下さい。 ただし、エラー制御演算子「@」でパースエラー(文法ミス)によるエラーメッセージは制御する事ができません。 PHPで出力されるエラーはエラー定数として定義されています。PHPですでに定義されている定義済み定数ってやつです。 PHPのエラーには、文法ミスなどの致命的なエラーから未定義の変数などを呼び出した時の軽いエラーまであります。よく見るエラーは以下のようなものです。
このうち文法ミスってのがParseエラーとして出力されスクリプトの実行すら止まってしまいます。これだけは上でも触れたとおりエラー制御演算子「@」でも回避できません。行末にセミコロン「;」を付け忘れたとか、文字列をクォートしなかったなどの場合に発生します。 Waringエラーはエラー文が出力されますが、スクリプトの実行は止まりません。スクリプト実行に何か問題があり、その部分の実行ができない場合などに出力されます。存在しない配列やファイルを操作しようとすると発生します。 Noticeエラーは軽い警告でスクリプトの実行には問題ないけど、やめといた方がいいよってくらいのエラーです。エラー文も出力されませんし、ス クリプトの実行も止まりません。よーするに見た目は何も変わりませんww。PHP内部でエラーが出ているだけなので気にしなくていいかもしれませんが、デ バック時にはこのエラーが役立つことも多々あります。未定義の変数を使用した場合などに発生します。 PHPではエラー報告レベルというものが設定されていて、これで出力されるエラーの種類が決められています。今までの説明でエラーが出力されるかど うかというのはすべてデフォルトの設定の場合です。この設定を変更するとNoticeエラーを見る事ができるようになりますが、その場合にはerror_reporting()関数を使います。この関数はエラー報告レベルを変更する事ができるので、デフォルトでは出力されないエラーを出力することができます。 参考関数
PHPのエラー報告レベルのデフォルト値は2039(E_ALL~E_NOTICE)となっています。この設定ではNoticeエラーを含まないのでNoticeエラーを出力する際には error_reporting(E_NOTICE); // 定数名で指定 などのようにします。
|