{php 5 例外 (例外)}
例外: 例外処理は、指定されたエラー (例外) 状況が発生したときにスクリプトの通常のフローを変更するために使用されます。
例外がトリガーされると、通常は次のことが起こります。
現在のコードの状態が保存され、コードの実行が事前定義された例外ハンドラー関数に切り替わります。状況に応じて、プロセッサは保存されたコードの状態からコードの実行を再開することがあります。スクリプトの実行を終了するか、コード内の別の場所からスクリプトの実行を続行します。さまざまなエラー処理方法を示します。
例外の基本的な使用 カスタム例外ハンドラーの作成 複数の例外 例外の再スロー 最上位の例外ハンドラーのセットアップ
<p class="sycode"> 基本使用 : </p> <p class="sycode"> Try, throw 和 catch 要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。处理处理程序应当包括:Try - 使用异常的函数应该位于 " try " 代码块内。如果没有触发异常,则代码将照常继续执行。但异常被触发,会抛出一个异常 。 </p> <p class="sycode"> Throw - 这里规定如何触发异常。每一个 " throw " 必须对应至少一个 " catch " Catch - " catch " 代码块会捕获异常,并创建一个包含异常信息的对象 <? phpfunction inverse($x) { if ( ! $x) { throw new Exception( ' Division by zero. ' ); } else return 1 / $x;} try { echo inverse( 5 ) . " \n " ; echo inverse( 0 ) . " \n " ;} catch (Exception $e) { echo ' Caught exception: ' , $e -> getMessage(), " \n " ;} // Continue execution echo ' Hello World ' ; ?> </p>
~カスタム例外クラスを作成する
カスタム例外ハンドラーの作成は非常に簡単です。 PHP で例外が発生したときに関数が呼び出される特殊なクラスを作成しただけです。このクラスは例外クラスの拡張である必要があります。
このカスタム例外クラスは、PHP の例外クラスのすべてのプロパティを継承し、カスタム関数を追加できます。
例外クラスの作成を開始します:
<p class="sycode"> <? php class customException extends Exception { public function errorMessage() { // error message $errorMsg = ' Error on line ' .$ this -> getLine(). ' in ' .$ this -> getFile() . ' : <b> ' .$ this -> getMessage(). ' </b> is not a valid E-Mail address ' ; return $errorMsg; } }$email = " someone@example...com " ; try { // check if if (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { // throw exception if email is not valid throw new customException($email); } } catch (customException $e) { // display custom message echo $e -> errorMessage(); } ?> </p>
~複数の例外
スクリプトに複数の例外を使用して、複数の状況を検出できます。
複数の if..else コード ブロック、switch コード ブロックを使用したり、複数の例外をネストしたりできます。これらの例外では、異なる例外クラスが使用され、異なるエラー メッセージが返されることがあります。
<p class="sycode"> <? php class customException extends Exception{ public function errorMessage(){ // error message $errorMsg = ' Error on line ' .$ this -> getLine(). ' in ' .$ this -> getFile(). ' : <b> ' .$ this -> getMessage(). ' </b> is not a valid E-Mail address ' ; return $errorMsg;}}$email = " someone@example.com " ; try { // check if if (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { // throw exception if email is not valid throw new customException($email); } // check for "example" in mail address if (strpos($email, " example " ) !== FALSE) { throw new Exception( " $email is an example e-mail " ); } } catch (customException $e) { echo $e -> errorMessage(); } catch (Exception $e) { echo $e -> getMessage(); } ?> </p>
~例外を再スローする
場合によっては、例外がスローされたときに、標準的な処理とは異なる方法で処理したい場合があります。例外は「catch」ブロックで再度スローできます。
スクリプトはシステムエラーをユーザーから隠す必要があります。システム エラーはプログラマにとって重要かもしれませんが、ユーザーはそれらに興味がありません。ユーザーにとって簡単にするために、よりユーザーフレンドリーなメッセージを使用して例外を再度スローできます:
<p class="sycode"> <? php class customException extends Exception { public function errorMessage() { // error message $errorMsg = $ this -> getMessage(). ' is not a valid E-Mail address. ' ; return $errorMsg; } }$email = " someone@example.com " ; try { try { // check for "example" in mail address if (strpos($email, " example " ) !== FALSE) { // throw exception if email is not valid throw new Exception($email); } } catch(Exception $e) { //re-throw exception throw new customException($email); } } catch (customException $e) { // display custom message echo $e -> errorMessage(); } ?> </p>
~トップレベル例外ハンドラーを設定します (トップレベル例外ハンドラー)
set_Exception_handler() 関数を設定できますキャッチされなかった例外をすべて処理するユーザー定義関数。
<?phpfunction myException($exception){echo "<b>Exception:</b> " , $exception->getMessage();}set_exception_handler('myException');throw new Exception('Uncaught Exception occurred');?>
上記のコードの出力は次のようになります:
Exception: Uncaught Exception occurred
上記のコードには、「catch」ブロックはありませんが、トップレベルの例外ハンドラーがトリガーされます。この関数は、キャッチされなかった例外をすべてキャッチするために使用する必要があります。
例外のルール 例外処理を必要とするコードは、潜在的な例外をキャッチするために try ブロック内に配置する必要があります。 すべての try ブロックまたは throw ブロックには、対応する catch ブロックが少なくとも 1 つ必要です。 複数の catch ブロックを使用して、さまざまな種類の例外をキャッチします。 例外は、try ブロック内の catch ブロックで再スローできます。
つまり、例外がスローされた場合は、それをキャッチする必要があります。
~

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
