PHPエラー処理例外
通常、カプセル化されたクラスが完全で独立していることを望み、内部コードの実行に外部から介入する必要がないため、プログラマにテスト用の追加コードの作成を依頼します。クラス内のメソッドにエラーがないかどうか。これは非常に不合理です。
クラスや外部コードを呼び出すプログラマーに依存するのではなく、クラス内部のエラー処理の責任に集中する必要があります。通常、クラスを使用するプログラマーは内部エラーの処理方法を知らないからです。メソッドによって発生したエラー。
例外クラス
一般的な記述:
< ?phpclass Server{ function __construct($file) { $this->file = $file; if(!file_exists($file)){ throw new Exception("file '$file' does not exist."); } }}class Client{ static function init() { try{ $conf = new Server(dirname(__FILE__)."/conf01.xml"); //测试用例 $conf->write(); }catch(Exception $e){ print $e; //这里可以打印错误或者做其他事情 } }}Client::init();?>
例外がスローされると、呼び出しスコープ China の catch 句が呼び出され、自動的に例外が発生します。例外がスローされるとクラスメソッドの実行が停止するため、オブジェクトをパラメータとして渡しているため、try 句から catch 句に制御が移ります
しかし、問題がありますつまり、複数の判定を書いて投げても結局一つしかキャッチできないので、エラーが発生する可能性があるので、何らかの処理を行う必要があります
<🎜。 > 高度な書き込み< ?phpclass Server { function __construct($file) { $this->file = $file; if(!file_exists($file)){ throw new FileException("file '$this->file' does not exist."); } } function write() { if(! is_writable($this->file)){ throw new BadException("file '$this->file' is bad."); //测试我将文件改成不能写的权限 chmod 000 conf01.xml } }}class BadException extends Exception{ //需要创建一个新的Exception类,名字是可以diy的,不过需要继承Exception类}class Client{ static function init() { try{ $conf = new Server(dirname(__FILE__)."/conf01.xml"); $conf->write(); }catch(FileException $e){ print $e; }catch(BadException $e){ //这里只执行了一个Exception,不过也是我们的目标的BadException print $e; }catch(Exception $e){ //这里是为了做后备,为了获取一些其他不能确认的Exception print $e; } }}Client::init();?>
exception 'BadException' with message 'file 'Downloads/conf01.xml' is bad.' in Downloads/Untitled.php:15Stack trace:#0 Downloads/Untitled.php(28): Server->write()#1 /Downloads/Untitled.php(39): Client::init()#2 {main}
なお、前のものが一致すると、次のものが順番に一致します。トリガーされません。
例外クラスを継承し、独自の出力をカスタマイズします
< ?phpclass Server { function __construct($file) { $this->file = $file; if(!file_exists($file)){ throw new FileException("file '$this->file' does not exist."); } } function write() { if(! is_writable($this->file)){ throw new BadException("file '$this->file' is not writeable."); } if(! is_readable($this->file)){ throw new SpecilException($this->file); } }}class BadException extends Exception{}class SpecilException extends Exception{ function __construct($file){ //这里可以创建一些自己的Exception规则,而不单纯是支持打印错误 echo "this is a Specil error,'$file' is not readable"; }}class Client{ static function init() { try{ $conf = new Server(dirname(__FILE__)."/conf01.xml"); $conf->write(); }catch(FileException $e){ print $e; }catch(BadException $e){ print $e; }catch(SpecilException $e){ //我将测试文件改成不能读的状态来测试 print $e; }catch(Exception $e){ print $e; } }}Client::init();?>
this is a Specil error,'/Downloads/conf01.xml' is not readableexception 'SpecilException' in/Downloads/Untitled.php:19Stack trace:#0 /Downloads/Untitled.php(40): Server->write()#1 /Downloads/Untitled.php(53): Client::init()#2 {main}

ホット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)

ホットトピック











多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

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

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

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

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

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

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています
