Rumah pembangunan bahagian belakang PHP7 Analisis ralat dan pengecualian dalam PHP7 bersama-sama

Analisis ralat dan pengecualian dalam PHP7 bersama-sama

Oct 14, 2021 pm 04:44 PM
mysql php

Disyorkan: "Tutorial PHP7"

Sebab mengapa bahasa PHP adalah mudah Salah satu daripadanya ialah mekanisme pengendalian ralat PHP Apabila bahasa PHP menjadi lebih moden, pengecualian juga muncul. Catatan blog ini hanya bercakap tentang ralat dan pengecualian untuk memudahkan pemahaman sistem , jadi adalah penting untuk mempelajari bahasa dan memahami mekanisme pengecualian

Apakah ralat
Apabila bahasa PHP menghadapi situasi yang tidak normal (seperti sambungan pangkalan data (atau fungsi. parameter dilalui secara salah), beberapa ralat akan dilaporkan Ralat boleh dibahagikan kepada banyak jenis Kecuali untuk ralat E_ERROR dan E_CORE_ERROR, ralat lain tidak akan menamatkan program
Sebab mengapa PHP membuat orang berasa mudah ialah program tidak akan melaporkan ralat dengan kerap, memberikan ilusi kepada orang ramai tentang penulisan yang lancar dan mudah
Itulah sebabnya ketelitian dan ketepatan program PHP adalah lebih teruk. Contohnya, apabila pertanyaan mysql_fetch_array menemui ralat rangkaian dan mengembalikan FALSE ( Program tidak ditamatkan berjalan), jika atur cara memanggil berpendapat bahawa pertanyaan tidak mempunyai data yang sepadan, maka program itu pada asasnya salah.
Kita boleh memilih jenis ralat yang hendak dilaporkan melalui arahan error_reporting dalam php.ini atau secara dinamik memanggil fungsi error_reporting() Perintah display_errors boleh mengawal sama ada ralat dikeluarkan dalam talian Perintah error_log boleh mengawal output ralat ke log

Cara menggunakan ralat dengan betul <.>Sama ada fungsi sistem atau tersuai Jika fungsi menghadapi ralat secara dalaman, bagaimanakah ia memberitahu pemanggil ia biasanya ditunjukkan oleh fungsi yang mengembalikan TRUE atau FALSE Kaedah pemprosesan ini mempunyai beberapa kelemahan:
● Pemanggil hanya mengetahui bahawa ralat telah berlaku, tetapi yang dikembalikan Terdapat terlalu sedikit maklumat ralat dan kekurangan penerangan tentang jenis ralat
● Logik pemprosesan program dan pengendalian ralat bercampur-campur dan kod yang dijana akan menjadi sangat tidak jelas.
Petua kecil: fungsi error_get_last() akan mengembalikan ralat terbaharu Sebab khusus.

Amalan terbaik:● fungsi set_error_handler() untuk mengehoskan semua ralat.
● fungsi trigger_error() boleh mencetuskan ralat tersuai dan boleh digunakan Gantikan pernyataan pulangan dalam fungsi
● Output semua ralat pada log dan tentukan jenis ralat
● Paparkan ralat kepada pengguna, seperti sebagai mengembalikan ralat kepada pengguna dengan cara yang lebih mesra
● Pengeluaran Perintah display_errors harus dimatikan dalam persekitaran dan dihidupkan dalam persekitaran pembangunan
Rangka kerja PHP lama Codeigniter boleh belajar daripada cara ia mengendalikan ralat

`function _error_handler($severity, $message, $filepath, $line)
{
    $is_error = (((E_ERROR | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR) & $severity) === $severity);
    //输出500错误HTTP状态码
    if ($is_error) {
        set_status_header(500);
    }
    //对于不需要处理的错误则直接中断
    if (($severity & error_reporting()) !== $severity) {
        return;
    }
    //将所有的错误记录到日志中
    $_error =& load_class('Exceptions', 'core');
    $_error->log_exception($severity, $message, $filepath, $line);
    //友好的输出所有错误
    if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
        $_error->show_php_error($severity, $message, $filepath, $line);
    }
    //假如致命错误则直接退出
    if ($is_error) {
        exit(1);   
    }
}
set_error_handler('_error_handler');`
Salin selepas log masuk

Apakah pengecualianPengecualian juga Ralat mempunyai ciri berikut:
● Pengecualian boleh disesuaikan dengan pelbagai jenis pengecualian, dan anda boleh juga memanjangkannya
● Tindakan yang paling biasa untuk pengecualian ialah menangkapnya, supaya pembangun boleh memproses ralat susulan Contohnya, anda boleh mengembalikan gesaan mesra kepada pengguna berdasarkan konteks pengecualian teruskan membuang pengecualian dan biarkan program huluan mengendalikannya. Jika pengecualian masih tidak ditangkap, program akan ditamatkan secara langsung
● Satu lagi tindakan pengecualian adalah untuk menulis logik perniagaan melalui fungsi dan menghadapi situasi yang tidak dijangka , anda boleh terus membuang pengecualian
● Pengecualian boleh ditangkap lapisan demi lapisan oleh kod Jika program paling luar tidak Jika ditangkap, kod akan ditamatkan terus
● Jika pengecualian dalam PHP tidak dapat ditangkap. , ia akan ditulis pada log ralat sistem sebagai ralat maut
Mari kita jelaskan melalui kod intuitif:

`function inverse($x)
{
    if ($x < 10) {
        throw new Exception(&#39;x<10&#39;);
    } elseif ($x >= 10 and $x < 100) {
        throw new LogicException(&#39;x>=10 and x<100&#39;);
    }
    return $x;
}
try {
    echo inverse(2)."\n";
} catch (LogicException $e) {
    echo &#39;Caught LogicException: &#39;, $e->getMessage(), "\n";
} catch (Exception $e) {
    echo 'Caught Exception: ', $e->getMessage(), "\n";
    throw $e;
}`
Salin selepas log masuk

Amalan terbaik untuk pengecualian● Pengecualian boleh membuat kod lebih jelas dan membolehkan pembangun menumpukan pada menulis logik perniagaan.
● Membina pengecualian berskala adalah sangat teknikal Adakah pengecualian SPL tidak mencukupi?
● Pengecualian penangkapan seharusnya hanya menangkap pengecualian yang boleh dikendalikan oleh. lapisan ini dan biarkan kod huluan mengendalikan pengecualian yang tidak boleh dikendalikan.

Pengecualian dalam PHP7 PHP7 menggalakkan penggunaan pengecualian untuk menggantikan ralat, tetapi adalah mustahil untuk membatalkan mekanisme pengendalian ralat sekaligus bahawa pengecualian ini selari dengan Pengecualian
Apabila mod ketat dihidupkan, banyak ralat dalam PHP7 dilemparkan oleh pengecualian Ralat Dengan cara ini, pengecualian boleh digunakan secara seragam .


● ErrorException.
ErrorException mewarisi daripada Exception.

Kami boleh menukar semua ralat kepada ErrorException melalui fungsi set_error_handler() Dengan cara ini, pengecualian boleh digunakan dengan senang hati dan seragam.
`declare (strict_types = 1);
function add(int $a, int $b)
{
    return $a + $b;
}
try {
    echo add("3", "4");
}
catch (TypeError $e) { //TypeError继承自Error
    echo $e->getMessage();
}`
Salin selepas log masuk
Di atas adalah kandungan terperinci tentang ralat memahami secara sistematik. dan pengecualian dalam PHP saya harap ia akan membantu anda.

Baca teks asal: Pemahaman sistematik tentang ralat dan pengecualian dalam PHP

Atas ialah kandungan terperinci Analisis ralat dan pengecualian dalam PHP7 bersama-sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MySQL: Kemudahan Pengurusan Data untuk Pemula MySQL: Kemudahan Pengurusan Data untuk Pemula Apr 09, 2025 am 12:07 AM

MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

Bolehkah saya mengambil kata laluan pangkalan data di Navicat? Bolehkah saya mengambil kata laluan pangkalan data di Navicat? Apr 08, 2025 pm 09:51 PM

Navicat sendiri tidak menyimpan kata laluan pangkalan data, dan hanya boleh mengambil kata laluan yang disulitkan. Penyelesaian: 1. Periksa Pengurus Kata Laluan; 2. Semak fungsi "Ingat Kata Laluan" Navicat; 3. Tetapkan semula kata laluan pangkalan data; 4. Hubungi pentadbir pangkalan data.

Cara Melihat MySQL Cara Melihat MySQL Apr 08, 2025 pm 07:21 PM

Lihat pangkalan data MySQL dengan arahan berikut: Sambungkan ke pelayan: MySQL -U Pengguna Nama -P Kata Laluan Run Show pangkalan data; Perintah untuk mendapatkan semua pangkalan data yang sedia ada Pilih pangkalan data: Gunakan nama pangkalan data; Lihat Jadual: Tunjukkan Jadual; Lihat Struktur Jadual: Huraikan nama jadual; Lihat data: pilih * dari nama jadual;

Bagaimana untuk melihat kata laluan pangkalan data di Navicat untuk MariaDB? Bagaimana untuk melihat kata laluan pangkalan data di Navicat untuk MariaDB? Apr 08, 2025 pm 09:18 PM

Navicat untuk MariaDB tidak dapat melihat kata laluan pangkalan data secara langsung kerana kata laluan disimpan dalam bentuk yang disulitkan. Untuk memastikan keselamatan pangkalan data, terdapat tiga cara untuk menetapkan semula kata laluan anda: Tetapkan semula kata laluan anda melalui Navicat dan tetapkan kata laluan yang kompleks. Lihat fail konfigurasi (tidak disyorkan, risiko tinggi). Gunakan alat baris perintah sistem (tidak disyorkan, anda perlu mahir dalam alat baris arahan).

Cara Membuat Premium Navicat Cara Membuat Premium Navicat Apr 09, 2025 am 07:09 AM

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

Cara menyalin jadual di mysql Cara menyalin jadual di mysql Apr 08, 2025 pm 07:24 PM

Menyalin jadual di MySQL memerlukan membuat jadual baru, memasukkan data, menetapkan kunci asing, menyalin indeks, pencetus, prosedur tersimpan, dan fungsi. Langkah -langkah khusus termasuk: mewujudkan jadual baru dengan struktur yang sama. Masukkan data dari jadual asal ke dalam jadual baru. Tetapkan kekangan utama asing yang sama (jika jadual asal mempunyai satu). Buat indeks yang sama. Buat pencetus yang sama (jika jadual asal mempunyai satu). Buat prosedur atau fungsi yang disimpan yang sama (jika jadual asal digunakan).

Navicat menyambung ke kod ralat dan penyelesaian pangkalan data Navicat menyambung ke kod ralat dan penyelesaian pangkalan data Apr 08, 2025 pm 11:06 PM

Kesilapan dan penyelesaian yang biasa apabila menyambung ke pangkalan data: Nama pengguna atau kata laluan (ralat 1045) Sambungan blok firewall (ralat 2003) Timeout sambungan (ralat 10060)

Cara Membuat Sambungan Baru ke MySQL di Navicat Cara Membuat Sambungan Baru ke MySQL di Navicat Apr 09, 2025 am 07:21 AM

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.

See all articles