1--TEST-- 2ZE2 ArrayAccess and exceptions 3--FILE-- 4<?php 5 6class Test implements ArrayAccess 7{ 8 public function offsetExists($offset): bool { throw new Exception(__METHOD__); return false; } 9 public function offsetGet($offset): mixed { throw new Exception(__METHOD__); return $offset; } 10 public function offsetSet($offset, $data ): void { throw new Exception(__METHOD__); } 11 public function offsetUnset($offset): void { throw new Exception(__METHOD__); } 12} 13 14$t = new Test; 15 16try 17{ 18 echo isset($t[0]); 19} 20catch(Exception $e) 21{ 22 echo "Caught in " . $e->getMessage() . "()\n"; 23} 24 25try 26{ 27 echo $t[0]; 28} 29catch(Exception $e) 30{ 31 echo "Caught in " . $e->getMessage() . "()\n"; 32} 33 34try 35{ 36 $t[0] = 1; 37} 38catch(Exception $e) 39{ 40 echo "Caught in " . $e->getMessage() . "()\n"; 41} 42 43try 44{ 45 unset($t[0]); 46} 47catch(Exception $e) 48{ 49 echo "Caught in " . $e->getMessage() . "()\n"; 50} 51?> 52--EXPECT-- 53Caught in Test::offsetExists() 54Caught in Test::offsetGet() 55Caught in Test::offsetSet() 56Caught in Test::offsetUnset() 57