検索
ホームページバックエンド開発PHPチュートリアルPHPでは、メソッドAがメソッドbを呼び出した場合、エラーを処理し、メソッドCを呼び出す方法C?

PHPでは、メソッドAがメソッドbを呼び出した場合、エラーを処理し、メソッドCを呼び出す方法C?

PHPメソッド呼び出しのエラー処理とフォールトトレランスメカニズム

この記事では、メソッドAがPHPでメソッドBを呼び出したときにメソッドBがスローする場合に優雅に処理する方法を説明し、エラーが発生したときにメソッドCを実行する方法について説明します。例を通じて、PHPの例外処理メカニズムを使用して堅牢なコードを構築する方法を示します。

a()b() 、およびc() 3つの方法を含むクラスがあるとします。目標は、 a()b()を呼び出し、 b()エラーの場合、エラー処理または回復のためにc()を実行することです。

元のコード(エラーが発生しやすい):

パブリック関数a(){
    $ this-> b();
    $ this-> c();
}

このコードには問題があります。B b()例外をスローする場合、 c()実行されません。

コードの改善(例外処理を使用):

パブリック関数a(){
    試す {
        $ this-> b();
    } catch(\ Exception $ e){
        //エラーログを記録するか、他のerror_logを実行する( "Method B()failed:"。$ e-> getMessage());
        $ this-> c();
    }
}

このコードはtry...catch Blockを使用します。 b()あらゆるタイプの例外( \Exceptionまたはそのサブクラス)をスローする場合、 catchブロックは例外をキャッチし、エラーメッセージ(より高度なロギングメカニズムを使用できます)を記録し、 c()メソッドを呼び出します。

特定のエラーを処理します:存在しない配列キーへのアクセス

画像に示されているエラーは、存在しない配列キーにアクセスしようとしています。 Array要素にアクセスする前に、 isset()関数またはarray_key_exists()関数を使用することにより、このようなエラーを防ぐことができます。

改善されたb()メソッド:

パブリック関数B(){
    $ arr = [];
    if(array_key_exists( 'key'、$ arr)){
        echo $ arr ['key'];
    } それ以外 {
        新しい\ exception( "array key 'key'が存在しない。");
    }
}

これで、 'key'$arrに存在しない場合、 b() a()catchブロックにキャッチされたカスタム例外をスローします。

より高度なエラー処理:カスタム例外クラス

さまざまなタイプのエラーをより明確に処理するために、カスタム例外クラスを作成できます。

 class arraykeynotfoundexceptionは\ exception {}を拡張します

パブリック関数B(){
    $ arr = [];
    if(!array_key_exists( 'key'、$ arr)){
        新しいarraykeynotfoundexception( "array key 'key'は存在しません。");
    }
    echo $ arr ['key'];
}

パブリック関数a(){
    試す {
        $ this-> b();
    } catch(arraykeynotfoundexception $ e){
        error_log( "配列キーに例外はありません:"。$ e-> getMessage());
        $ this-> c();
    } catch(\ Exception $ e){
        error_log( "その他の例外:"。$ e-> getMessage());
        //他のタイプの例外を処理}
}

例外クラスをカスタマイズすることにより、さまざまな種類のエラーをより正確に処理し、コードの読みやすさと保守性を向上させることができます。これにより、エラー処理がより柔軟で効率的になります。

上記の方法により、PHPメソッド呼び出しのエラーを効果的に処理し、必要に応じて対応するエラー処理または回復操作を実行することで、より堅牢で信頼できるアプリケーションを構築できます。

以上がPHPでは、メソッドAがメソッドbを呼び出した場合、エラーを処理し、メソッドCを呼び出す方法C?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
ai合并图层的快捷键是什么ai合并图层的快捷键是什么Jan 07, 2021 am 10:59 AM

ai合并图层的快捷键是“Ctrl+Shift+E”,它的作用是把目前所有处在显示状态的图层合并,在隐藏状态的图层则不作变动。也可以选中要合并的图层,在菜单栏中依次点击“窗口”-“路径查找器”,点击“合并”按钮。

ai橡皮擦擦不掉东西怎么办ai橡皮擦擦不掉东西怎么办Jan 13, 2021 am 10:23 AM

ai橡皮擦擦不掉东西是因为AI是矢量图软件,用橡皮擦不能擦位图的,其解决办法就是用蒙板工具以及钢笔勾好路径再建立蒙板即可实现擦掉东西。

谷歌超强AI超算碾压英伟达A100!TPU v4性能提升10倍,细节首次公开谷歌超强AI超算碾压英伟达A100!TPU v4性能提升10倍,细节首次公开Apr 07, 2023 pm 02:54 PM

虽然谷歌早在2020年,就在自家的数据中心上部署了当时最强的AI芯片——TPU v4。但直到今年的4月4日,谷歌才首次公布了这台AI超算的技术细节。论文地址:https://arxiv.org/abs/2304.01433相比于TPU v3,TPU v4的性能要高出2.1倍,而在整合4096个芯片之后,超算的性能更是提升了10倍。另外,谷歌还声称,自家芯片要比英伟达A100更快、更节能。与A100对打,速度快1.7倍论文中,谷歌表示,对于规模相当的系统,TPU v4可以提供比英伟达A100强1.

ai可以转成psd格式吗ai可以转成psd格式吗Feb 22, 2023 pm 05:56 PM

ai可以转成psd格式。转换方法:1、打开Adobe Illustrator软件,依次点击顶部菜单栏的“文件”-“打开”,选择所需的ai文件;2、点击右侧功能面板中的“图层”,点击三杠图标,在弹出的选项中选择“释放到图层(顺序)”;3、依次点击顶部菜单栏的“文件”-“导出”-“导出为”;4、在弹出的“导出”对话框中,将“保存类型”设置为“PSD格式”,点击“导出”即可;

ai顶部属性栏不见了怎么办ai顶部属性栏不见了怎么办Feb 22, 2023 pm 05:27 PM

ai顶部属性栏不见了的解决办法:1、开启Ai新建画布,进入绘图页面;2、在Ai顶部菜单栏中点击“窗口”;3、在系统弹出的窗口菜单页面中点击“控制”,然后开启“控制”窗口即可显示出属性栏。

GPT-4的研究路径没有前途?Yann LeCun给自回归判了死刑GPT-4的研究路径没有前途?Yann LeCun给自回归判了死刑Apr 04, 2023 am 11:55 AM

Yann LeCun 这个观点的确有些大胆。 「从现在起 5 年内,没有哪个头脑正常的人会使用自回归模型。」最近,图灵奖得主 Yann LeCun 给一场辩论做了个特别的开场。而他口中的自回归,正是当前爆红的 GPT 家族模型所依赖的学习范式。当然,被 Yann LeCun 指出问题的不只是自回归模型。在他看来,当前整个的机器学习领域都面临巨大挑战。这场辩论的主题为「Do large language models need sensory grounding for meaning and u

强化学习再登Nature封面,自动驾驶安全验证新范式大幅减少测试里程强化学习再登Nature封面,自动驾驶安全验证新范式大幅减少测试里程Mar 31, 2023 pm 10:38 PM

引入密集强化学习,用 AI 验证 AI。 自动驾驶汽车 (AV) 技术的快速发展,使得我们正处于交通革命的风口浪尖,其规模是自一个世纪前汽车问世以来从未见过的。自动驾驶技术具有显着提高交通安全性、机动性和可持续性的潜力,因此引起了工业界、政府机构、专业组织和学术机构的共同关注。过去 20 年里,自动驾驶汽车的发展取得了长足的进步,尤其是随着深度学习的出现更是如此。到 2015 年,开始有公司宣布他们将在 2020 之前量产 AV。不过到目前为止,并且没有 level 4 级别的 AV 可以在市场

AI抢饭碗成真!近500家美国企业用ChatGPT取代员工,有公司省下超10万美元AI抢饭碗成真!近500家美国企业用ChatGPT取代员工,有公司省下超10万美元Apr 07, 2023 pm 02:57 PM

自从ChatGPT掀起浪潮,不少人都在担心AI快要抢人类饭碗了。然鹅,现实可能更残酷QAQ......据就业服务平台Resume Builder调查统计,在1000多家受访美国企业中,用ChatGPT取代部分员工的,比例已达到惊人的48%。在这些企业中,有49%已经启用ChatGPT,还有30%正在赶来的路上。就连央视财经也为此专门发过一个报道:相关话题还曾一度冲上了知乎热榜,众网友表示,不得不承认,现在ChatGPT等AIGC工具已势不可挡——浪潮既来,不进则退。有程序员还指出:用过Copil

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。