例外処理をスローする奴(throw=飛ばす?) #php

2023.12.09

Logging

おはようございます、久しぶりにちょっとした技術のお話です。トライキャッチ(try-catch)した後にたまにスローしているコードとか見かけると思います。大体、エラーメッセージとか出力していると思いますが、これ独自のクラスなどに変更することが可能なんですよね。

なので、こんな事が出来るわけです、コケたら違う処理を行ってリカバリみたいな事やコケた値を拾ってバックアップするとか、いろいろな事が出来てしまいます。

PHPの公式でも例文を書いていますが、アレだとなんかわからない方もいると思いますので、もっと簡略化した例文コードを書いてみました。このコードを実行するとゼロによる除算エラーになりますが、トライキャッチ(try-catch)の中に書いているのでエラーにならずcatchへ処理は推移します。そしてスローでオリジナルのクラスを呼び出しているわけです。

<?php
    class errors{
        public function __construct($msg,$x) {
            print $msg;
            print $x;
        }
    }
    try {
        $x=5;
        $a = $x/0;
        //code...
    } catch (\Throwable $th) {
        throw new errors($th->getMessage(),$x);
    }

トライキャッチの良いところはエラーにならないところですが、エラーにならない事が困り物になる場合もあるので注意が必要です。そこは現場の諸先輩方の話を聞いて対応したほうが良さげかと思います。

明日へ続く。

タグ

$msg, $th, $th-&gt, catch, class errors, construct, getMessage, lt, php, print, public function, throw new errors, Throwable, try, try-catch, スロー, リカバリ, 例文, 除算エラー,