これは、すでに問題を解決しているので、これは単なるドキュメントですが、デバッグするには微妙で難解で、公的な領域では便利だと思っていました。オブジェクトメソッド内で例外がキャッチされていない
問題は、単に動作していないオブジェクトメソッドでtry/catchブロックがあることでした。
TestClass.php:
<?php
//TestClass.php
namespace MyTest;
class TestClass {
public function __construct() {
\e("Initializing object");
try {
\e("Trying object exception");
\throwTestException("Failing gracefully in object");
\e("After exception");
} catch (Exception $e) {
\e($e->getMessage());
}
\e("After object init exception");
}
}
?>
Main.php:ロードMain.php上
<?php
//Main.php
function e($str) { echo "\n$str"; }
function throwTestException($msg) {
throw new RuntimeException($msg);
}
require "TestClass.php";
e("Beginning");
try {
e("First try");
throwTestException("Failing gracefully first");
e("After exception");
} catch (Exception $e) {
e($e->getMessage());
}
e("Ending");
e('');
e('Beginning object test');
new \MyTest\TestClass();
e('Ending object test');
?>
予想結果はこのだっ減少例は、次のようになり2つのファイルにあります。
:私は実際に得たものBeginning
First try
Failing gracefully first
Ending
Beginning object test
Initializing object
Trying object exception
Failing gracefully in object
After object init exception
Ending object test
はこのようなものでした
Beginning
First try
Failing gracefully first
Ending
Beginning object test
Initializing object
Trying object exception
Fatal Error: Uncaught Exception: Failing gracefully in object......
ご覧のとおり、例外は検出されませんでした。私はあらゆる種類のものを試してみて、それがなぜ捕まえられていないのか分かりませんでした。そして、....(下記の回答を参照)