Heim Backend-Entwicklung PHP-Tutorial 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');
失败,则无任何显示

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Methode PDO::prepare() in Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Methode PDO::prepare() in Jun 22, 2023 pm 06:40 PM

PHP ist eine beliebte Webentwicklungssprache, die schon seit langem verwendet wird. Die in PHP integrierte PDO-Klasse (PHP Data Object) ist für uns eine gängige Möglichkeit, bei der Entwicklung von Webanwendungen mit der Datenbank zu interagieren. Ein Problem, auf das einige PHP-Entwickler jedoch häufig stoßen, besteht darin, dass sie bei Verwendung der PDO-Klasse zur Interaktion mit der Datenbank eine Fehlermeldung wie diese erhalten: PHPFatalerror:CalltoundefinedmethodPDO::prep

Was soll ich tun, wenn bei der Verwendung von Axios in einer Vue-Anwendung „Uncaught (in Promise) Error: Request failed with status code 500' auftritt? Was soll ich tun, wenn bei der Verwendung von Axios in einer Vue-Anwendung „Uncaught (in Promise) Error: Request failed with status code 500' auftritt? Jun 24, 2023 pm 05:33 PM

Axios wird häufig in Vue-Anwendungen verwendet. Axios ist ein Promise-basierter HTTP-Client, der in Browsern und Node.js verwendet werden kann. Während des Entwicklungsprozesses erscheint manchmal die Fehlermeldung „Uncaught(inpromise)Error: Requestfailedwithstatuscode500“. Für Entwickler kann diese Fehlermeldung schwer zu verstehen und zu lösen sein. In diesem Artikel wird dies untersucht

Lösen Sie das Problem „Fehler: Unvollständiger Typ ist nicht zulässig' im C++-Code Lösen Sie das Problem „Fehler: Unvollständiger Typ ist nicht zulässig' im C++-Code Aug 26, 2023 pm 08:54 PM

Lösen Sie das „error:incompletetypeisnotallowed“-Problem im C++-Code. Während des C++-Programmierungsprozesses treten manchmal einige Kompilierungsfehler auf. Dieser Fehler wird normalerweise durch die Arbeit mit einem unvollständigen Typ verursacht. In diesem Artikel wird die Ursache dieses Fehlers erläutert und verschiedene Lösungen bereitgestellt. Zunächst einmal: Ich

Lösen Sie das Problem „Fehler: erwarteter Initialisierer vor ‚Datentyp'' im C++-Code Lösen Sie das Problem „Fehler: erwarteter Initialisierer vor ‚Datentyp'' im C++-Code Aug 25, 2023 pm 01:24 PM

Lösen Sie das „error:expectedinitializerbefore'datatype‘“-Problem in C++-Code. Beim Schreiben von Code treten manchmal Kompilierungsfehler auf. Einer der häufigsten Fehler ist „error:expectedinitializerbefore‘datatype‘“. Dieser Fehler tritt normalerweise in einer Variablendeklaration oder Funktionsdefinition auf und kann dazu führen, dass das Programm nicht korrekt kompiliert werden kann oder

0271: Was soll ich tun, wenn der Computer aufgrund eines Echtzeituhrfehlers nicht eingeschaltet werden kann? 0271: Was soll ich tun, wenn der Computer aufgrund eines Echtzeituhrfehlers nicht eingeschaltet werden kann? Mar 13, 2023 am 11:30 AM

Lösung für „0271: Echtzeituhrfehler“, der nicht gestartet werden kann: 1. Drücken Sie F1 und verschieben Sie in der angezeigten Benutzeroberfläche die Optionsleiste zum dritten Element „Datum/Uhrzeit“. 2. Ändern Sie die Systemzeit manuell auf die aktuelle Uhrzeit einmal; 3. Drücken Sie F10 und wählen Sie im Popup-Dialogfeld „Ja“ aus. 4. Öffnen Sie das Notebook erneut, um es normal zu starten.

So lösen Sie die PHP-Warnung: fopen(): SSL-Vorgang in file.php in Zeile X fehlgeschlagen So lösen Sie die PHP-Warnung: fopen(): SSL-Vorgang in file.php in Zeile X fehlgeschlagen Aug 25, 2023 am 09:22 AM

So lösen Sie PHPWarning:fopen():SSLoperationfailedinfile.phponlineX In der PHP-Programmierung verwenden wir häufig die Funktion fopen, um Dateien oder URLs zu öffnen und zugehörige Vorgänge auszuführen. Wenn Sie jedoch die Funktion fopen verwenden, werden Sie manchmal auf etwas Ähnliches wie Warning:fopen():SSLoperationfailedinfile.p stoßen

So lösen Sie die PHP-Warnung: fopen(): Fehler beim Öffnen des Streams: Berechtigung verweigert So lösen Sie die PHP-Warnung: fopen(): Fehler beim Öffnen des Streams: Berechtigung verweigert Aug 20, 2023 pm 01:45 PM

So lösen Sie PHPWarning:fopen():failedtoopenstream:Permissiondenied Bei der Entwicklung von PHP-Programmen stoßen wir häufig auf Fehlermeldungen wie PHPWarning:fopen():failedtoopenstream:Permissiondenied. Dieser Fehler ist normalerweise auf falsche Datei- oder Verzeichnisberechtigungen zurückzuführen

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysqli_connect() Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysqli_connect() Jun 23, 2023 am 09:40 AM

Beim Schreiben von Webanwendungen mit PHP wird häufig eine MySQL-Datenbank zum Speichern von Daten verwendet. PHP bietet eine Möglichkeit zur Interaktion mit der MySQL-Datenbank namens MySQLi. Bei der Verwendung von MySQLi wird jedoch manchmal eine Fehlermeldung angezeigt, wie unten gezeigt: PHPFatalerror:Calltoundefinedfunctionmysqli_connect() Diese Fehlermeldung bedeutet, dass PHP my nicht finden kann

See all articles