例外処理

例外処理

<?php
try {
  // 例外が発生する可能性がある処理
} catch (例外の種類 $例外を受け取る変数名) { 
  // 例外発生時の処理
} finally {
  // 例外の有無に関わらず実行される処理
}?>

マルチキャッチ

<?php
try {
  ...
} catch (下位の例外クラス $xxx) { 
  ...
} catch (上位の例外クラス $xxx) {
  // catchブロックの記述順に注意。下位の例外クラスは先に、上位の例外クラスは後に記述
}?>

throw命令

自分で任意の例外を発生させることができる。

<?php
if (...) {
  throw new RuntimeException('エラーメッセージ');
}
?>

文だけではなく式としてthrowを利用できる。

<?php 
// 条件演算子 
$i > 0 ? $i : throw new Exception('...');

// null合体演算子 nullなら例外をスロー
$str ?? throw new Exception('...');

// アロー関数 例外をスローするだけの関数
$hoge = fn() => throw new Exception('...');

// ショートカット演算 左式がfalseの場合
$x > 0 || throw new Exception('...');
?>