PHP が例外処理エラーをスローする方法_PHP チュートリアル
まず第一に、PHP 例外とは何なのかを知る必要があります。
Exception は、指定されたエラーが発生したときにスクリプトの通常のフローを変更するために使用されます。
PHP 5 は、新しいオブジェクト指向のエラー処理メソッドを提供します。
例外処理は、指定されたエラー (例外) 状況が発生したときにスクリプトの通常のフローを変更するために使用されます。この状況を例外と呼びます。
例外がトリガーされると、通常は次のことが起こります:
現在のコード状態が保存されます
コード実行が事前定義された例外ハンドラー関数に切り替わります
状況に応じて、プロセッサは保存されたコード状態からコード実行を再開する場合があります。スクリプトの実行、またはコード内の別の場所からスクリプトの実行を続行します
さまざまなエラー処理方法を示します:
例外の基本的な使用方法
カスタム例外ハンドラーの作成
複数の例外
例外を再スローする
トップレベルの例外ハンドラーの設定
の基本的な使用例外
例外がスローされると、後続のコードは実行を続行できず、PHP は一致する「キャッチ」コード ブロックを見つけようとします。
例外がキャッチされず、対応する処理に set_Exception_handler() を使用する必要がない場合、重大なエラー (致命的エラー) が発生し、「Uncaught Exception」エラーメッセージが出力されます。
例外をキャッチせずにスローしてみましょう:
//例外関数を使用して関数を作成しますfunction
checkNum($number) {
if( $number>1) {
throw new Exception("値は 1 以下でなければなりません");
} return true;
//trigger
ExceptioncheckNum(2)?>次のようなエラーが発生します:
致命的エラー: C:webfoldertest.php:6 のメッセージ「値は 1 以下である必要があります」を伴うキャッチされない例外 '例外' スタック トレース: #0 C:webfoldertest.php(12): checkNum (28) #1 {main} が C:webfoldertest.php の 6 行目でスローされました
トライ、スロー、キャッチ
ハンドラーの処理には以下を含める必要があります:
Try - 例外を使用する関数は「try」ブロック内にある必要があります。例外がトリガーされない場合、コードは通常どおり実行を続行します。ただし、例外がトリガーされると、例外がスローされます。
Throw - 例外をトリガーする方法を指定します。各「スロー」は少なくとも 1 つの「キャッチ」に対応する必要があります
Catch - 「キャッチ」コード ブロックは例外をキャッチし、例外情報を含むオブジェクトを作成します
例外をトリガーしましょう:
1) { throw new Exception("値は 1 以下である必要があります") } return true }//「try」で例外をトリガーします。 code block try { checkNum(2); //例外がスローされた場合、このテキストは表示されません echo 'これが表示された場合、番号は 1 以下です' }// 例外をキャッチします catch(Exception $e) { echo ' Message: ' .$e->getMessage(); }?>
上記のコードは次のようなエラーを受け取ります:
メッセージ: 値は 1 以下でなければなりません
例の説明:
コードは例外をスローし、それをキャプチャします:
checkNum() 関数を作成します。数値が 1 より大きいかどうかを検出します。その場合は、例外をスローします。
「try」コードブロックでcheckNum()関数を呼び出します。
checkNum() 関数で例外がスローされる
「catch」コード ブロックは例外を受け取り、例外情報を含むオブジェクト ($e) を作成します。
この例外オブジェクトから $e->getMessage() を呼び出すと、例外からのエラー メッセージが出力されます
ただし、「各スローはキャッチに対応する必要がある」という原則に従うために、トップレベルの例外が出力されます。ハンドラーは、Missed エラーを処理するように設定できます。
カスタム例外クラスを作成する
カスタム例外ハンドラーの作成は非常に簡単です。 PHP で例外が発生したときに関数を呼び出すことができる特殊なクラスを作成しただけです。このクラスは例外クラスの拡張である必要があります。
このカスタム例外クラスは、PHP の例外クラスのすべてのプロパティを継承しており、カスタム関数を追加できます。
例外クラスの作成を開始します:
コードをコピーします
コードは次のとおりです:
classcustomException extends Exception {
public function errorMessage() {
//エラーメッセージ
$errorMsg = '.$this->getLine() の行でエラーが発生しました。' >getFile() .': '.$this->getMessage().' return $errorMsg; = "someone@example…com";try {
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
//電子メールが有効でない場合は例外をスロー throw
newcustomException($email) ;
}
}catch (customException $e)
{
//display カスタム メッセージ
echo $e->errorMessage();
この新しいクラスは古い例外クラスのコピーです。プラス errorMessage() 関数。古いクラスのコピーであるため、古いクラスからプロパティとメソッドが継承され、getLine()、getFile()、getMessage() などの例外クラスのメソッドを使用できます。
例の説明:
customException() クラスは、古い例外クラスの拡張として作成されます。このようにして、古いクラスのすべてのプロパティとメソッドを継承します。
errorMessage()関数を作成します。電子メール アドレスが不正な場合、関数はエラー メッセージを返します。
$email 変数に不正な電子メール アドレス文字列を設定します。
"try" コード ブロックを実行します。 電子メール アドレスが不正であるため、An がスローされます。例外
「キャッチ」コード ブロックは例外をキャッチし、エラー メッセージを表示します
複数の例外
スクリプトに複数の例外を使用して、複数の状況を検出できます。
複数の if..else コード ブロックまたは switch コード ブロックを使用したり、複数の例外をネストしたりできます。これらの例外は、異なる例外クラスを使用し、異なるエラー メッセージを返す可能性があります:
コードをコピー
return $errorMsg;
}
$email = "someone@example.com";try {
if(filter_var($) email, FILTER_VALIDATE_EMAIL) === FALSE) {
//メールが有効でない場合は例外をスロー throw new
customException($email)
}
//メールアドレスの「例」をチェック
if(strpos($email, "例") !== FALSE) { throw new Exception("$email は例の電子メールです") } }catch (customException $e) { echo $e->errorMessage(); e) { echo $e->getMessage(); }?>
説明の例:
いずれかの条件が true でない場合、例外がスローされます。古い例外クラスの拡張として作成されました。このようにして、古いクラスのすべてのプロパティとメソッドを継承します。
errorMessage()関数を作成します。電子メール アドレスが無効な場合、この関数はエラー メッセージを返します。
「try」コード ブロックを実行すると、最初の条件では例外はスローされません。
電子メールには文字列「example」が含まれているため、2 番目の条件により例外がトリガーされます。
customException がキャッチされない場合は、基本例外がしっかりとキャッチされ、例外はそこで処理されます。
例外の再スロー
例外がスローされたときに、標準の方法とは異なる方法で処理したい場合があります。例外は「catch」ブロックで再度スローできます。
スクリプトはシステムエラーをユーザーから隠す必要があります。システム エラーはプログラマにとって重要かもしれませんが、ユーザーはそれらに興味がありません。ユーザーが簡単にできるように、よりユーザーフレンドリーなメッセージを付けて例外を再度スローできます:
コードをコピー
コードは次のとおりです:
class customException extends Exception { public function errorMessage () { //エラー メッセージ $errorMsg = $this->getMessage().' は有効な電子メール アドレスではありません。'; return $errorMsg; ; try { try { //メールアドレスの「example」をチェック if(strpos($email, “example”) !== FALSE) {
//例外を再スロー throw new
customException($email) } }catch (customException $e) {
//カスタムメッセージを表示
echo $e->エラーメッセージ (); }
?>
例の説明:
上記のコードは、電子メール アドレスに文字列「example」が含まれているかどうかを検出します。その場合は、例外を再度スローします。
customException() クラスは、古い例外クラスの拡張として作成されました。このようにして、古いクラスのすべてのプロパティとメソッドを継承します。
errorMessage()関数を作成します。電子メール アドレスが無効な場合、この関数はエラー メッセージを返します。
$email 変数を有効なメール アドレスに設定しますが、文字列「example」が含まれます。
「try」ブロックには、例外を再度スローできるように別の「try」ブロックが含まれています。
電子メールには「example」という文字列が含まれているため、例外がトリガーされます。
"catch" は例外をキャッチし、"customException" を再スローします。
「customException」をキャッチし、エラーメッセージを表示します。
例外が現在の "try" ブロックでキャッチされない場合は、より高いレベルで catch ブロックを探します。
トップレベルの例外ハンドラーを設定する
set_Exception_handler() 関数は、キャッチされなかった例外をすべて処理するユーザー定義関数を設定できます。
function myException($Exception){
echo “Exception: ” , $Exception-> getMessage() ;
}
set_Exception_handler('myException');
throw new Exception('Uncaught Exception happens');
上記のコードには、コードの「catch」ブロックはなく、代わりにトップレベルの例外ハンドラーがトリガーされます。この関数は、キャッチされなかった例外をすべてキャッチするために使用する必要があります。
例外ルール
例外処理を必要とするコードは、潜在的な例外をキャッチするために try コード ブロック内に配置する必要があります。
各 try または throw コード ブロックには、対応する catch コード ブロックが少なくとも 1 つ必要です。
複数の catch ブロックを使用して、さまざまな種類の例外をキャッチします。
例外は、try ブロック内の catch ブロックで再スローできます。
つまり、例外がスローされた場合は、それをキャッチする必要があります。
http://www.bkjia.com/PHPjc/322889.html

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
