ホームページ  >  記事  >  バックエンド開発  >  PHP 学習メモ 7: エラーと例外の処理

PHP 学習メモ 7: エラーと例外の処理

WBOY
WBOYオリジナル
2016-06-23 13:23:54862ブラウズ

「PHP と MySQL Web 開発」のメモ集を読んでください:

1. 例外処理の概念

1) 例外処理は try コード ブロックで呼び出され、実行されます

try

{

// コードはここにあります

}

2) PHP では、例外は手動でスローする必要があります

throw new Exception('message',code); これは関数ではなく言語構造です。

他のオブジェクトは throw 句で渡すことができます。


3) try コード ブロックの後に、少なくとも 1 つの catch コード ブロックを指定する必要があります。

catch (タイプヒント例外)

{

// 例外を処理します

}

複数の catch コード ブロックを 1 つの try コード ブロックに関連付けることができます。

例:


try {

throw new Exception("ひどいエラーが発生しました", 42) ;

キャッチ (例外 $e) {

echo ". $e->getCode(). ": ". $e->getMessage()."

". getFile(). $e->getLine(). "
}

;


2. 例外クラス

例外

(PHP 5 >= 5.1.0)

概要

Exception はすべての例外の基本クラスです。

クラスの概要

Exception {

/* プロパティ */

protectedstring $message

protectedint $code ;

protectedstring $file ;

protectedint $line

/* メソッド* /

public __construct ([ string $message = "" [, int $code = 0 [, Exception$previous =

NULL ]]] )

Final public string getMessage ( void )

Final public Exception getPrevious ( void )

a Final Public Int GetCode (VOID)

Final Public String Getfile (VOID)

Final Public Int Getline (VOID)

Final Public Array Gettrace P p Final Public String Gettraceasstring (VOID)

Public String __toString (void)

Final private void __clone ( void )

}

属性

message

例外メッセージの内容

コード

例外コード ファイル 例外がスローされたファイル名

line

ファイルで例外がスローされた行番号

テーブル目次

Exception::__construct — 例外コンストラクター

Exception::getMessage — 例外メッセージの内容を取得する

Exception::getPrevious — 例外チェーン内の前の例外を返す

Exception: :getCode — 例外コードを取得する
  • Exception::getFile — 例外が発生したプログラム ファイルの名前を取得します
  • Exception::getLine — ファイル内の例外コードの行番号を取得します
  • Exception::getTrace — 例外追跡情報を取得します
  • Exception ::getTraceAsString — 文字列型の例外トレース情報を取得します
  • Exception::__toString — 例外オブジェクトを文字列に変換します
  • Exception::__clone — 例外の複製
  • 3. ユーザー定義の例外

    ユーザーは、Exception クラスを拡張して独自の例外クラスを作成できます。

    Exception クラスのほとんどのパブリック メソッドはfinalであり、オーバーロードできないことに注意してください。独自の Exception サブクラスを作成できますが、これらの基本メソッドの動作は変更できません。ただし、__toString() 関数はオーバーロードされる可能性があることに注意してください。 例:

    }

    catch (myException $m)


    {

    echo $m;

    }

    ?>

    4. I/O 部分と提案

    I/O 部分は例外が発生しやすいものです。一般に、適切なコーディング習慣では、try コード ブロックのコード量が少なく、関連する例外がコード ブロックの最後でキャッチされることが必要です。 。

    注: 一致する catch ステートメント ブロックがない場合、PHP は致命的なエラーを報告します。

    例:


    <?php

    php

    class class myexceptionは例外を拡張します。 ".$this->getFile()。"

    // 追加するファイルを開く

    try

    {

    if (!($fp = @fopen("$DOCUMENT_ROOT/../orders/orders.txt", ' ab'))))

    if (!fwrite($fp, $outputstring, strlen($outputstring)))


    throw new fileWriteException();

    fclose($) fp);

    echo "

    gt;注文が書き込まれました。& lt;/ p>"

    }

    catch (fileOpenException $foe)

    {

    echo "

    注文ファイル開けませんでした。

    ウェブマスターに問い合わせてください。";

    }

    catch (Exception $e)

    {

    echo "

    < Strong&gt;あなたの注文は現時点では処理できませんでした。エラー処理メカニズム

    PHP は、例外処理や @error 抑制などの複雑なエラー処理メカニズムも提供します。

    例:

    if (!($fp = @fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab')))

    throw new fileOpenException();

    この関数呼び出しが失敗すると、PHP は php.ini の設定に従ってエラー レポートまたはログを出力します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。