Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Lima minit untuk menunjukkan kepada anda pengendalian pengecualian dalam PHP

Lima minit untuk menunjukkan kepada anda pengendalian pengecualian dalam PHP

WBOY
WBOYasal
2021-10-20 17:26:062733semak imbas

Dalam artikel sebelum ini, saya membawakan anda "Anda mesti faham cara menambah tera air imej dalam PHP", yang memperkenalkan anda secara terperinci cara menambah tera air dalam PHP melalui contoh Artikel ini Dalam artikel ini, kami akan terus melihat pengetahuan berkaitan pengendalian ralat dalam PHP. Saya harap ia dapat membantu semua orang.

Lima minit untuk menunjukkan kepada anda pengendalian pengecualian dalam PHP

Ralat dan pengendalian pengecualian dalam PHP sangat biasa digunakan dalam PHP Dalam pembangunan harian kita, kita pasti akan menghadapi perkara seperti terlupa untuk menambah koma bertitik , fungsi nama ditulis secara salah atau fungsi ditakrifkan semula, dsb. Terdapat banyak ralat Jika ralat boleh ditemui semasa proses pembangunan, ia pasti akan memberi manfaat kepada pembangunan kita.

Oleh itu, menggunakan proses dengan betul semasa membangunkan projek akan membantu kami mencari dan membetulkan ralat untuk mempercepatkan pembangunan. Kemudian mari kita lihat cara memahami pengendalian ralat kami. Anda juga boleh belajar melalui video pengajaran "pengendalian ralat php" percuma.

Kelas pengendalian pengecualian dalam PHP

PHP menyediakan kelas pengendalian pengecualian terbina dalam, iaitu Exception , kelas ini mengandungi beberapa fungsi pengendalian pengecualian yang boleh menangkap pengecualian dan ralat program.

Berikut ialah fungsi yang lebih biasa digunakan dalam kelas ini:

  • getTraceAsString(): Mengembalikan rentetan terformat yang dijana oleh fungsi getTrace() Maklumat

  • __toString(): Maklumat rentetan yang menjana pengecualian, ia boleh terlebih muatan. Ambil perhatian bahawa bahagian hadapan fungsi ini ialah dua garis bawah

  • getMessage(): mengembalikan kandungan mesej pengecualian

  • getLine(): mengembalikan ralat Nombor baris kod

  • getCode(): Mengembalikan kod pengecualian dalam bentuk angka

  • getFile(): Mengembalikan nama fail tempat pengecualian berlaku

  • getTrace(): Kembalikan susunan jejak belakang()

Tangkap pengecualian dalam program

Pengecualian dalam program biasanya tidak muncul dengan sendirinya Pada masa ini, kita boleh menggunakan pernyataan try catch dan kata kunci throw untuk mencapai tujuan menangkap pengecualian dalam program.

Pernyataan try catch adalah serupa dengan pernyataan kawalan aliran Kata kunci lontaran boleh membuang pengecualian dalam program melalui struktur yang serupa dengan pemilihan bersyarat. Format sintaks pernyataan cuba tangkap adalah seperti berikut:

try{
    // 可能出现异常或错误的代码,比如文件操作、数据库操作等
}catch(Exception $a){    // $a 为一个异常类的对象
    // 输出错误信息
}

Apabila kita perlu menangkap pengecualian program, kita perlu meletakkan kod yang perlu ditangkap ke dalam blok kod cuba dalam sintaks di atas , setiap percubaan harus mempunyai sekurang-kurangnya A tangkapan sepadan. Apabila blok kod cuba tidak menangkap pengecualian yang sepadan, kod akan melompat ke tangkapan terakhir dan meneruskan.

Pengecualian yang dijana di dalamnya boleh dibuang keluar oleh pernyataan lontaran dan ditangkap oleh tangkapan Apabila pengecualian berlaku, kod di belakangnya tidak akan terus dilaksanakan.

Contohnya adalah seperti berikut:

<?php
    try{
        $err = &#39;抛出异常信息,并跳出 try 语句块&#39;;
        if(is_dir(&#39;./demo&#39;)){
            echo &#39;这里是一些可能会发生异常的代码&#39;;
        }else{
            throw new Exception($err, 20211020);   // 抛出异常
        }
        echo &#39;上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>&#39;;
    }catch(Exception $e){
        echo &#39;捕获异常:&#39;.$e->getMessage().&#39;<br>错误代码:&#39;.$e->getCode().&#39;<br>&#39;;
    }
    echo &#39;继续执行 try catch 语句之外的代码&#39;;
?>

Hasil keluaran:

Lima minit untuk menunjukkan kepada anda pengendalian pengecualian dalam PHP

Dalam contoh di atas, melalui pernyataan cuba Cuba untuk menentukan sama ada terdapat direktori bernama demo dalam direktori semasa, direktori itu tidak wujud, jadi kata kunci lontaran dilaksanakan dan pengecualian dibuang. Selepas pengecualian ditemui dan dibuang, penyataan baki pernyataan cuba tidak akan dilaksanakan.

Buat kelas pengecualian anda sendiri

Sesetengah pengecualian boleh ditakrifkan terlebih dahulu dalam PHP, kerana PHP jarang mengambil inisiatif Membuang pengecualian Apabila pengecualian ditakrifkan terlebih dahulu, kita boleh menggunakan if-else untuk menilai kemungkinan pengecualian dan membuang pengecualian secara manual Dalam PHP, kita selalunya boleh menggunakan kelas pengecualian yang kita cipta sendiri.

Contohnya adalah seperti berikut:

<?php
class emailException extends Exception{
    function __toString(){
        return "<b>email is null</b>file:".$this->getFile().&#39;,line:&#39;. $this->getLine();
    }
}
class nameException extends Exception{
}
?>

Dalam contoh di atas, dua kelas pengecualian ditakrifkan, kedua-duanya mewarisi daripada kelas asas Pengecualian.

Dalam perniagaan sebenar, kami juga akan membuang pengecualian yang berbeza mengikut keperluan yang berbeza Contoh adalah seperti berikut:

function reg($reg) {
    if (empty($reg[&#39;email&#39;])) {
        throw new emailException("emaill is null", 1);
    }
    if(empty($reg[&#39;name&#39;])) {
        throw new nameException("name is null", 2);
     }
}

Apabila melaksanakan kod perniagaan, anda boleh menggunakan pernyataan if untuk menilai Di mana pengecualian akan. berlaku, kemudian membuang pengecualian secara manual, dan mengedarkan pengecualian yang berbeza kepada kelas pengecualian yang berbeza melalui pernyataan dalam contoh berikut, pengecualian yang berbeza ditangkap mengikut situasi yang berbeza Apabila tangkapan pertama menangkap Pengecualian, walaupun terdapat pengecualian lain dalam program, yang lain blok kod tangkapan akan dilangkau. Tidak kira sama ada terdapat pengecualian dalam program, pernyataan dalam akhirnya akhirnya akan dilaksanakan. Contohnya adalah seperti berikut:

try{
    $reg = array(&#39;phone&#39;=>&#39;1888888888&#39;);
    reg($reg);
} catch(emailException $e) {
    echo $e;
} catch(nameException $e) {
    echo &#39;error msg:&#39; .$e->getMessage().&#39;error code:&#39;.$e->getCode();
} finally {
    echo &#39; finally&#39;;
}

Jika anda ingin mengetahui lebih lanjut tentang PHP, anda boleh klik pada "Tutorial Video PHP" untuk belajar!

Atas ialah kandungan terperinci Lima minit untuk menunjukkan kepada anda pengendalian pengecualian dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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