Rumah pembangunan bahagian belakang tutorial php set_error_handle 和 at(@)符号的有关问题

set_error_handle 和 at(@)符号的有关问题

Jun 13, 2016 pm 01:41 PM
echo error fopen quot

set_error_handle 和 at(@)符号的问题
问题是这样的,我用set_error_handle 将一些系统错误或者警告信息写入到日志文件中。
但是对于一些api 比如fopen之类的,如果文件不存在的情况下也会跑到 自己写的错误处理函数中,之前是在fopen之前加上@符号,对诸如此类问题不进行显示。
如果我想在使用set_error_handle的情况下还能不把@的功能去掉。怎么做啊?
谢谢大侠们了


------解决方案--------------------
用try catch捕获
------解决方案--------------------
可以去掉,使用set_error_handler你只需要注意两点:
1.set_error_handler只会捕获error_reporting里定义的错误类型,这个可以在php.ini里配置,也可以使用函数设置;
2.自定义的错误处理函数返回值如果为false,则会触发php的默认错误处理。而返回值为true则不会触发php默认的错误处理,则看不到那个讨厌的报错了。

至于写法你可以参考一下。
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
//如果这个错误类型没有包含在error_reporting里
return;
}

switch ($errno) {
case E_USER_ERROR:
echo "My ERROR [$errno] $errstr
\n";
echo " Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")
\n";
echo "Aborting...
\n";
exit(1);
break;

case E_USER_WARNING:
echo "My WARNING [$errno] $errstr
\n";
break;

case E_USER_NOTICE:
echo "My NOTICE [$errno] $errstr
\n";
break;
default:
echo "Unknown error type: [$errno] $errstr
\n";
break;
}
//返回false则会触发php的默认错误处理,反回true则只用自定义函数处理。
return true;
}
set_error_handler('myErrorHandler');
fopen('/tmp/foo', 'r');
------解决方案--------------------
经测试,#5的代码可以满足你的要求!
执行后,若
fopen('/tmp/foo', 'r');
失败,则显示
Unknown error type: [2] fopen(/tmp/foo) [function.fopen]: failed to open stream: No such file or directory


@fopen('/tmp/foo', 'r');
失败,则无任何显示

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Penyelesaian kepada PHP Ralat maut: Panggilan ke kaedah yang tidak ditentukan PDO::prepare() in Penyelesaian kepada PHP Ralat maut: Panggilan ke kaedah yang tidak ditentukan PDO::prepare() in Jun 22, 2023 pm 06:40 PM

PHP ialah bahasa pembangunan web popular yang telah digunakan sejak sekian lama. Kelas PDO (Objek Data PHP) yang disepadukan dalam PHP adalah cara biasa untuk kita berinteraksi dengan pangkalan data semasa pembangunan aplikasi web. Walau bagaimanapun, masalah yang sering dihadapi oleh sesetengah pembangun PHP ialah apabila menggunakan kelas PDO untuk berinteraksi dengan pangkalan data, mereka menerima ralat seperti ini: PHPFatalerror:CalltoundefinedmethodPDO::prep

Apakah yang perlu saya lakukan jika 'Ralat Tidak Ditangkap (dalam janji): Permintaan gagal dengan kod status 500' berlaku apabila menggunakan axios dalam aplikasi Vue? Apakah yang perlu saya lakukan jika 'Ralat Tidak Ditangkap (dalam janji): Permintaan gagal dengan kod status 500' berlaku apabila menggunakan axios dalam aplikasi Vue? Jun 24, 2023 pm 05:33 PM

Sangat biasa untuk menggunakan axios dalam aplikasi Vue ialah klien HTTP berasaskan Promise yang boleh digunakan dalam penyemak imbas dan Node.js. Semasa proses pembangunan, mesej ralat "Uncaught(inpromise)Error: Requestfailedwithstatuscode500" kadangkala muncul untuk pembangun, mesej ralat ini mungkin sukar difahami dan diselesaikan. Artikel ini akan meneroka perkara ini

Selesaikan masalah 'ralat: jenis tidak lengkap tidak dibenarkan' dalam kod C++ Selesaikan masalah 'ralat: jenis tidak lengkap tidak dibenarkan' dalam kod C++ Aug 26, 2023 pm 08:54 PM

Selesaikan masalah "error:incompletetypeisnotallowed" dalam kod C++ Semasa proses pengaturcaraan C++, anda kadangkala menghadapi beberapa ralat kompilasi Salah satu ralat biasa ialah "error:incompletetypeisnotallowed". Ralat ini biasanya disebabkan oleh operasi pada jenis yang tidak lengkap. Artikel ini akan menerangkan punca ralat ini dan menyediakan beberapa penyelesaian. Pertama sekali, saya

Selesaikan masalah 'ralat: pemula dijangka sebelum 'datatype'' dalam kod C++ Selesaikan masalah 'ralat: pemula dijangka sebelum 'datatype'' dalam kod C++ Aug 25, 2023 pm 01:24 PM

Selesaikan masalah "error:expectedinitializerbefore'datatype'" dalam kod C++ Dalam pengaturcaraan C++, kadangkala kita menghadapi beberapa ralat kompilasi semasa menulis kod. Ralat ini biasanya berlaku dalam pengisytiharan berubah atau definisi fungsi dan boleh menyebabkan atur cara gagal untuk menyusun dengan betul atau

0271: Apakah yang perlu saya lakukan jika komputer tidak boleh dihidupkan kerana ralat jam masa nyata? 0271: Apakah yang perlu saya lakukan jika komputer tidak boleh dihidupkan kerana ralat jam masa nyata? Mar 13, 2023 am 11:30 AM

Penyelesaian kepada "0271: ralat jam masa nyata" yang tidak boleh dihidupkan: 1. Tekan F1, dan dalam antara muka yang muncul, alihkan bar pilihan ke item ketiga "Tarikh/Masa" 2. Tukar masa sistem secara manual ke masa semasa; 3. Tekan F10 dan pilih ya dalam kotak dialog pop timbul 4. Buka semula buku nota untuk but seperti biasa.

Cara menyelesaikan Amaran PHP: fopen(): Operasi SSL gagal dalam file.php pada baris X Cara menyelesaikan Amaran PHP: fopen(): Operasi SSL gagal dalam file.php pada baris X Aug 25, 2023 am 09:22 AM

Bagaimana untuk menyelesaikan PHPWarning:fopen():SSLoperationfailedinfile.phponlineX Dalam pengaturcaraan PHP, kami sering menggunakan fungsi fopen untuk membuka fail atau URL dan melaksanakan operasi yang berkaitan. Walau bagaimanapun, apabila menggunakan fungsi fopen, kadangkala anda akan menghadapi sesuatu yang serupa dengan Warning:fopen():SSLoperationfailedinfile.p

Cara menyelesaikan PHP Amaran: fopen(): gagal membuka strim: Kebenaran ditolak Cara menyelesaikan PHP Amaran: fopen(): gagal membuka strim: Kebenaran ditolak Aug 20, 2023 pm 01:45 PM

Bagaimana untuk menyelesaikan PHPWarning:fopen():failedtoopenstream:Permissiondenied Dalam proses membangunkan atur cara PHP, kita sering menghadapi beberapa mesej ralat, seperti PHPWarning:fopen():failedtoopenstream:Permissiondenied. Ralat ini biasanya disebabkan oleh kebenaran fail atau direktori yang salah

Penyelesaian kepada ralat PHP Fatal: Panggilan ke fungsi yang tidak ditentukan mysqli_connect() Penyelesaian kepada ralat PHP Fatal: Panggilan ke fungsi yang tidak ditentukan mysqli_connect() Jun 23, 2023 am 09:40 AM

Apabila menulis aplikasi web menggunakan PHP, pangkalan data MySQL sering digunakan untuk menyimpan data. PHP menyediakan cara untuk berinteraksi dengan pangkalan data MySQL yang dipanggil MySQLi. Walau bagaimanapun, kadangkala apabila menggunakan MySQLi, anda akan menemui mesej ralat, seperti yang ditunjukkan di bawah: PHPFatalerror:Calltoundefinedfunctionmysqli_connect() Mesej ralat ini bermakna PHP tidak dapat mencari saya

See all articles