Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah jenis ralat biasa dalam php

Apakah jenis ralat biasa dalam php

小老鼠
小老鼠asal
2023-04-24 16:10:462018semak imbas

Jenis ralat biasa dalam PHP ialah: 1. Jenis ralat parse, menunjukkan ralat penghuraian atau ralat sintaks 2. Jenis ralat fatal, menunjukkan ralat maut; 4. Jenis notis; perhatian kepada ralat; 5. Jenis yang tidak digunakan, menunjukkan ralat tahap terendah.

Apakah jenis ralat biasa dalam php

Sistem pengendalian untuk tutorial ini: Sistem Windows 10, PHP versi 8.1, komputer Dell G3.

1. Jenis ralat PHP

Tahap ralat PHP

Ralat Penghuraian >

1. Ralat penghuraian atau ralat sintaks (Ralat penghuraian)

Ralat sintaks ialah ralat yang paling biasa dalam pengaturcaraan dan paling mudah untuk diselesaikan, seperti kehilangan titik Mesej ralat akan dipaparkan apabila nombor dicapai. Ralat ini menghentikan pelaksanaan program dan memaparkan mesej ralat. Kami boleh membetulkan atur cara berdasarkan mesej ralat dan melaksanakannya semula.

【Contoh】Yang berikut menunjukkan ralat sintaks biasa dan mesej ralat yang berkaitan melalui kod ringkas.

<?php
    $a = 1;
    $b = 2;
    $c = $a + $b
    echo ;
?>
; ditinggalkan pada penghujung baris 4 dalam kod di atas, jadi menjalankan kod di atas akan memaparkan mesej ralat berikut:

Parse error: syntax error, unexpected &#39;echo&#39; (T_ECHO) in D:\WWW\index.php on line 5
Seperti yang dapat dilihat dari contoh di atas dan menjalankan hasil , ralat sintaks akan menghalang program daripada terus dilaksanakan. Hanya selepas ralat ini diselesaikan, program boleh dilaksanakan dengan lancar.

2. Ralat maut:

Ini ialah jenis ralat di mana pengkompil PHP memahami kod PHP tetapi ia mengenal pasti fungsi yang tidak diisytiharkan. Ini bermakna memanggil fungsi tanpa definisi fungsi.

Atur cara melaporkan ralat secara langsung dan kod perlu diubah suai! ! ! Untuk mengganggu pelaksanaan program, anda boleh menggunakan fungsi register_shutdown_function() untuk mencetuskan fungsi sebelum atur cara ditamatkan, seperti

<?php 
function add($x, $y) { 
    $sum = $x + $y; 
    echo "sum = " . $sum; 
}
$x = 0; 
$y = 20;
add($x, $y); 
diff($x, $y); 
?>

Apakah jenis ralat biasa dalam php

Penjelasan: Dalam baris 10, fungsi diff( ), tetapi fungsi diff() tidak ditakrifkan, jadi ia memberikan ralat.

3 Amaran:

Tiada ralat sintaks dalam atur cara, tetapi semasa pelaksanaan, PHP akan menemui beberapa aspek program yang tidak munasabah, oleh itu Mesej amaran akan muncul, tetapi program akan terus dilaksanakan.

Contoh: Menggunakan 0 sebagai pembahagi akan menyebabkan atur cara berjalan dengan tidak betul dan mengeluarkan mesej ralat.

<?php
    $a = 1;
    $b = 0;
    $c = $a / $b;
    echo "$a / $b = $c";
?>
Ralat:

Apakah jenis ralat biasa dalam php

4. Notis:

Ia serupa dengan Ralat amaran, yang bermaksud bahawa program mengandungi ralat, tetapi ia membenarkan pelaksanaan skrip. Ia akan berlaku apabila menggunakan beberapa pembolehubah yang tidak ditentukan, pemalar atau kekunci tatasusunan tanpa petikan dan program terus melaksanakan

<?php  
header("content-type:text/html;charset=utf-8");
$x = "PHP中文网"; 
echo $x; 
echo $y; 
?>
Penjelasan: Program ini menggunakan pembolehubah tidak diisytiharkan $y, jadi ia memberikan mesej ralat .

5. Ralat tahap terendah (Ditamatkan, tidak disyorkan, tidak disyorkan)

Akan berlaku apabila menggunakan beberapa fungsi yang telah tamat tempoh dan program akan terus dilaksanakan.

2. PHP konfigurasi salah

Selain menetapkannya dalam skrip, anda juga boleh mengkonfigurasinya dalam fail konfigurasi php.ini

error_reporting = E_ALL&~E_NOTICE; //设置错误报告级别
display_errors = 1; //开发环境开启,生产环境关闭

3. Pengecualian PHP

Pengecualian PHP ialah ciri baharu PHP5 Berbeza daripada pengecualian JAVA/C#, pengecualian PHP perlu dibuang secara manual dengan membuang Pengecualian baharu dan bukannya dilemparkan. secara automatik oleh sistem.

Perbezaan antara ralat PHP dan pengecualian Ia adalah dua konsep yang berbeza, tetapi ia mempunyai persamaan:

Jika pengecualian tidak ditangkap dan dikendalikan, program akan menamatkan dan melaporkan Fatal. Ralat, apabila anda melihat ini, semua orang akan tertanya-tanya sama ada anomali ini adalah ilusi, tetapi ia boleh difahami dengan cara ini. Walau bagaimanapun, program boleh terus dilaksanakan selepas pengecualian ditangkap, tetapi program mesti ditamatkan selepas Ralat Fatal sebenar berlaku. Pengecualian

boleh ditangkap menggunakan

, dan kod seterusnya boleh terus dilaksanakan selepas ralat tidak boleh ditangkap menggunakan try{}catch(){}. try{}catch(){}

Jika pengecualian dilemparkan, ia mesti ditangkap, jika tidak, program akan menamatkan pelaksanaan.

4. Pengecualian dan ralat PHP dilemparkan

Balingan pengecualian:

throw new Exception(‘Some Error Message’);

Balingan ralat:

trigger_error();

Ralat yang dicetuskan tidak akan ditangkap oleh kenyataan tangkapan pengecualian cuba-tangkaptrigger_error()

5 Pengendalian ralat PHP

set_error_handler()
hanya boleh mengendalikan Dihentikan, Terdapat tiga peringkat. ralat: Notis dan Pusing, dan selepas pemprosesan, skrip akan terus melaksanakan baris seterusnya di mana ralat berlaku.

register_shutdown_function()
Kaedah ini ialah fungsi panggil balik terakhir sebelum penghujung skrip, jadi sama ada ia die()/error (exception)/atau skrip berakhir seperti biasa, ia akan dipanggil

6. Pengendalian pengecualian PHP

set_exception_handler()
Tetapkan pengendali pengecualian lalai Jika terdapat tangkapan cuba/tangkap, fungsi ini tidak akan dilaksanakan, jika tidak, ia akan dilaksanakan. dan jika dilaksanakan, skrip tidak akan terus dilaksanakan Dalam baris terakhir kod di mana pengecualian berlaku, program akan ditamatkan serta-merta

Notaset_exception_handler()

set_exception_handler(“myException”) 不仅可以接受函数名,还可以接受类的方法(公开的静态方法 及 公开的非静态方法 都可以),但需要以 数组形式 传递,数组的第一值为“类名”,第二个参数为“方法名”,如下代码所示:

<?php
class App{
    function myException($exception) {
        echo "<b>Exception:</b> " , $exception->getMessage();
    }
}
set_exception_handler(array(&#39;App&#39;,&#39;myException&#39;));
 
throw new Exception(&#39;Uncaught Exception occurred&#39;);
?>

七、PHP7 异常处理的大变化

在PHP7之前,Deprecated、Notice、Waning这类错误是可以捕获的(使用set_error_handler()函数),而Fatel Error无法捕获的。

在PHP7之后,出现了一个异常与错误通用的接口Throwable,Exception类与Error类都实现了该接口,导致Error类或Error类的派生类的错误对象(大部分Fatel Error,而之前三类错误不变)也可以像Exception一样被捕获(2种捕获方法:1、try/catch 2、set_exception_handler())。

Atas ialah kandungan terperinci Apakah jenis ralat biasa 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