PHPで例外を出力するときにわざわざgetMessage()を使う必要はない
たまに見かけるので。
こんな感じにすれば__toString()が自動的に呼ばれる。エラーメッセージとスタックトレースの両方がついたいい感じの出力になる。
<?php function a() { throw new Exception("test"); } try { a(); } catch (Exception $e) { echo $e; }
exception 'Exception' with message 'test' in /tmp/vw50zKH/28:4 Stack trace: #0 /tmp/vw50zKH/28(8): a() #1 {main}
文字列コンテキストになっているか不安な場合は、"$e"
とすれば安心。
getMessage()
はスタックトレースがないし、getTraceAsString()
は逆にメッセージがない。そもそもどちらもファイル名・行数に関する表示はない。加工してrethrowするような場合以外は、__toString()
相当がおすすめ。