Cuba/Tangkap blok dalam PHP tidak dapat menangkap situasi pengecualian
P粉226413256
P粉226413256 2023-08-22 15:19:37
0
1
499
<p>Saya cuba menjalankan contoh #1 ini, dari halaman ini: http://php.net/manual/en/language.exceptions.php</p> <pre class="brush:php;toolbar:false;"><?php fungsi songsang($x) { jika (!$x) { buang Exception baru('Bahagian dengan sifar.'); } pulangkan 1/$x; } cuba { echo songsang(5) "n"; echo songsang(0) "n"; } tangkapan (Pengecualian $e) { echo 'Caught exception: ', $e->getMessage(), "n"; } // Teruskan pelaksanaan echo "Hello Worldn"; ?></pra> <p>Walau bagaimanapun, output yang saya perolehi tidak dijangka: </p> <pre class="brush:php;toolbar:false;">0.2 Ralat maut: Pengecualian tidak ditangkap 'Pengecualian' dengan mesej 'Bahagian dengan sifar.' inxxx: 7 Surih tindanan: #0 xxx(14): songsang(0) #1 {utama} dibuang dalam xxx pada baris 7</pre> <p>Persekitaran pembangunan yang saya gunakan ialah <code>UniServer 3.5</code> dan <code>PHP 5.2.3</code></p>
P粉226413256
P粉226413256

membalas semua(1)
P粉611456309

Saya baru sahaja menghadapi masalah yang tepat ini, rasanya saya telah menyalin nama pengecualian tetapi ia tidak menangkapnya. Ternyata satu kesilapan bodoh di pihak saya, tetapi saya fikir saya akan menyiarkan situasi saya di sini sekiranya orang lain berada dalam situasi yang sama.

Pengecualian saya dipanggil A dalam ruang nama saya dan skrip dipanggil B dalam satu ruang nama. Masalahnya ialah saya mempunyai AMyException yang sama dengan (dalam PHP) BAMyException (kerana skrip saya dipanggil B dalam ruang nama!). Apa yang saya perlu lakukan ialah menambah garis miring ke belakang (atau apa sahaja namanya) sebelum nama pengecualian untuk membetulkannya supaya ia kelihatan seperti ini: AMyException

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan