目次
PHPのtry catch、trycatchでキャプチャした例外例の詳細説明
ホームページ バックエンド開発 PHPチュートリアル php の try catch でキャプチャされる例外例の詳細な説明、trycatch_PHP チュートリアル

php の try catch でキャプチャされる例外例の詳細な説明、trycatch_PHP チュートリアル

Jul 13, 2016 am 10:13 AM
catch php try

PHPのtry catch、trycatchでキャプチャした例外例の詳細説明

この記事の例では、php で例外をキャッチする try catch について説明します。参考のためにみんなで共有してください。具体的な手法の分析は次のとおりです:

php で catch を試すと、プログラム コードで例外をキャッチできるため、不要なエラーをうまく処理できるようになります。興味のある方はぜひご覧ください。

PHP の try{}catch{} ステートメントの概要

PHP5 には、他の言語と同様の例外処理モジュールが追加されています。 PHP コードで生成された例外は、throw ステートメントでスローし、catch ステートメントでキャッチできます。 (注: 取得するには最初に投げる必要があります)

例外処理を必要とするコードは、考えられる例外をキャッチするために try コード ブロックに配置する必要があります。

すべてのトライには、少なくとも 1 つの対応するキャッチが必要です。

複数のキャッチを使用して、さまざまなクラスによって生成された例外をキャッチします。

try コード ブロックが例外をスローしなくなった場合、またはスローされた例外に一致するキャッチが見つからない場合、PHP コードは最後のキャッチにジャンプした後、実行を続行します。

もちろん、PHP では、catch ブロック内で例外を再度スローすることができます。

例外がスローされると、後続のコード (翻訳者注: 例外がスローされたコード ブロックを指します) は実行を続行せず、PHP は最初に一致するキャッチを見つけようとします。

例外がキャッチされず、対応する処理に set_Exception_handler() を使用する必要がない場合、PHP は重大なエラーを生成し、Uncaught Exception... (キャッチされない例外) プロンプト メッセージを出力します。

まず、PHP の組み込み例外クラスの基本的なプロパティとメソッドを見てみましょう。 (特定の実装を除く)

コードをコピーします コードは次のとおりです:
try{
}
キャッチ(){
新しい例外()をスローします;
}
キャッチ(){
//ここで、前のブロックによってスローされた例外をキャッチできます
}

さらに例外を処理するには、PHP で try{}catch{} を使用する必要があります。これには Try ステートメントと少なくとも 1 つの catch ステートメントが含まれます。例外をスローする可能性のあるメソッドを呼び出すコードはすべて、try ステートメントを使用する必要があります。 Catch ステートメントは、スローされる可能性のある例外を処理するために使用されます。以下は、getCommandObject() によってスローされた例外を処理する方法を示しています。

コードをコピーします コードは次のとおりです:
試してみてください{
$mgr = 新しい CommandManager();
$cmd = $mgr->getCommandObject("realcommand");
$cmd->execute();
} catch (例外 $e) {
print $e->getMessage();
exit();
}
?>
ご覧のとおり、PHP で throw キーワードを try{}catch{} と組み合わせて使用​​すると、クラス メソッドによって返される値が間違ったタグで「汚染」されることを回避できます。 「例外」自体は他のオブジェクトとは異なる PHP の組み込みタイプであるため、混乱することはありません。

例外がスローされた場合、try ステートメントのスクリプトは実行を停止し、すぐに catch ステートメントのスクリプトの実行に切り替わります。

例は次のとおりです:

インクルードファイルエラーにより例外がスローされる


コードをコピーします コードは次のとおりです:
// 間違ったデモ
試してみてください{
require ('test_try_catch.php');
} catch (例外 $e) {
echo $e->getMessage();
}

// 例外を正しくスローします

試してみてください{
if (file_exists('test_try_catch.php')) {
require ('test_try_catch.php');
} その他 {
throw new Exception('ファイルが存在しません');
}
} catch (例外 $e) {
echo $e->getMessage();
}

例外がスローされたがキャッチされなかった場合、致命的なエラーが発生します。

複数のキャッチは複数の例外をキャプチャします

PHP は一致する catch ブロックをクエリします。複数の catch ブロックがある場合、PHP がどの catch ブロックに入る必要があるかを見つけられるように、各 catch ブロックに渡されるオブジェクトは異なる型である必要があります。 try コード ブロックが例外をスローしなくなった場合、またはスローされた例外に一致するキャッチが存在しない場合、PHP コードは最後のキャッチにジャンプした後、実行を継続します。複数の例外をキャッチする例は次のとおりです:


コードをコピーします コードは次のとおりです:
クラス MyException は Exception{
を拡張します //最初のパラメーターのメッセージが必ず指定する属性になるようにコンストラクターを再定義します
パブリック関数 __construct($message, $code=0){
//ここで独自のコードの一部を定義できます
//すべての変数が割り当てられているかどうかを確認するために、同時にparent::construct()を呼び出すことをお勧めします
親 ::__construct($message, $code);
}
//親クラスから継承したメソッドを書き換えて、文字列の出力スタイルをカスタマイズします
パブリック関数 __toString(){
return __CLASS__.":[".$this->code."]:".$this->message."
";
}
//この例外の処理メソッドをカスタマイズします
パブリック関数customFunction(){
echo "このタイプの例外をカスタマイズした方法で処理します";
}
}

//カスタム拡張機能をテストするための例外クラス MyException を作成します
クラス TestException{
Public $var; // オブジェクトが正常に作成されたかどうかを判断するために使用されるメンバー属性
Function __construct($value=0){ //スローされる例外は、コンストラクター メソッドに値を渡すことで決定されます
Switch ($ Value) {// インレット値の選択的判断
ケース 1: // パラメーター 1 をブリーストし、カスタムの異常オブジェクトをスローします
throw new MyException("渡された値「1」は無効なパラメータです",5);break;
ケース 2: // パラメーター 2 を渡し、PHP 組み込みの異常なオブジェクトをスローします
Throw New MyException ("インレット値" 2 "はパラメーターとして使用できません", 6);                                                                                                                                                                                                                                                                                                                                                                                                                  }
}
}

//例 1、例外がない場合、プログラムは正常に実行され、try 内のすべてのコードが実行され、catch ブロックは実行されません
試してください{
$ Testobj = new testxception () // デフォルトパラメータを使用して異常なワイプオブジェクトを作成します
;echo "********
"; //例外がスローされない場合、このステートメントは通常通り実行されます
} Catch (MyException $ E) {// ユーザー定義の異常ブロックをキャプチャします
echo "カスタム例外をキャプチャ: $e
" // カスタマイズされた方法で例外メッセージを出力します
                                                                    }catch(例外 $e){ // オブジェクトをキャプチャしますPHP の組み込み例外処理クラス
echo "デフォルトの例外をキャプチャします:".$e->getMessage()."
" //例外メッセージを出力します
}
var_dump($testObj); // オブジェクトが正常に作成されたかどうかを判断します。例外がなければ、作成は成功です。
//例 2、カスタム例外をスローし、カスタム例外処理クラスを通じてこの例外をキャッチして処理します
試してください{
$testObj1 =new TestException(1); // 1 を渡すとカスタム例外がスローされます
echo "********
" //このステートメントは実行されません
} Catch (MyException $ E) {// この CATCH ブロック内のコードが実行されます
echo "カスタム例外をキャッチ: $e
"; $e->customFunction(); } Catch (Exception $ E) {// この CATCH ブロックは実行されません
echo "デフォルトの例外をキャッチします:".$e->getMessage()."
"; }
var_dump($testObj1); //例外が発生したため、このオブジェクトは正常に作成されませんでした

//例 2、組み込み例外をスローし、カスタム例外処理クラスを通じてこの例外をキャッチして処理します
試してください{
$ TestObj2 = New TestException (2) // 2 で合格し、組み込みの異常をスローします
; echo "********
" //このステートメントは実行されません
} catch(myexception $ e){ echo "カスタム例外をキャッチ: $e
"; $e->customFunction(); } Catch (Exception $ E) {// この CATCH ブロックは実行されません
echo "デフォルトの例外をキャッチします:".$e->getMessage()."
"; }
var_dump($testObj2); //例外が発生したため、このオブジェクトは正常に作成されませんでした
?>

上記のコードでは、2 つの例外処理クラスを使用できます。1 つはカスタム例外処理クラス MyException、もう 1 つは PHP の組み込み例外処理クラス Exception です。 try ブロック内でテスト クラス TestException のオブジェクトをそれぞれ作成し、構築メソッドで提供されるさまざまな数値パラメーターに従って、カスタム例外クラス オブジェクト、組み込み例外クラス オブジェクトをスローし、例外をスローせずに、対応する例外クラス オブジェクトにジャンプします。 catch ブロックで実行されます。例外が発生しない場合、実行のための catch ブロックには入らず、テスト クラス TestException のオブジェクトが正常に作成されます

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/915425.html技術記事 php、trycatch の try catch 例外の例の詳細説明 この記事では、php の try catch 例外の例について説明します。参考のためにみんなで共有してください。具体的なメソッドは次のように分析されます: try catch in php can...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles