首頁  >  文章  >  後端開發  >  PHP 中的自訂函數如何實作帶 @時不拋出錯誤?

PHP 中的自訂函數如何實作帶 @時不拋出錯誤?

WBOY
WBOY原創
2016-09-19 09:16:37992瀏覽

在一些 PHP 內建函數(例如mkdir)中,在前面加上 @可以屏蔽該函數拋出的錯誤

那麼自訂函數要如何實現這一點呢?

我試了下throw new Exceptiontrigger_error都無法被@屏蔽

補充說明:

是這樣的,例如我想寫一個JsonFile::get()方法,當文件不存在時拋個錯、路徑非法時拋個錯、解碼失敗時拋個錯,並返回false

當使用者在意錯誤訊息時可以自行捕捉並處理;當不在意錯誤訊息只希望得到檔案內容或 false (失敗)時,可以
@JsonFile::get()
這樣調用

主要也是為了方便嘛。請問如何實作這樣的自訂方法(或函數)呢?
或者說我這樣的思路不太好?有沒有既方便又合理的實作方法呢?

回覆內容:

在一些 PHP 內建函數(例如mkdir)中,在前面加上 @可以屏蔽該函數拋出的錯誤

那麼自訂函數要如何實現這一點呢?

我試了下throw new Exceptiontrigger_error都無法被@屏蔽

補充說明:

是這樣的,例如我想寫一個JsonFile::get()方法,當文件不存在時拋個錯、路徑非法時拋個錯、解碼失敗時拋個錯,並返回false

當使用者在意錯誤訊息時可以自行捕捉並處理;當不在意錯誤訊息只希望得到檔案內容或 false (失敗)時,可以
@JsonFile::get()
這樣調用

主要也是為了方便嘛。請問如何實作這樣的自訂方法(或函數)呢?
或者說我這樣的思路不太好?有沒有既方便又合理的實作方法呢?

首先要保證文法沒問題,然後好像跟 throw new Exception和trigger_error 沒關係了,上碼:

<code><?php

    function test($abc){
        mysql_connect("localhost", "用户名错误", "密码错误");
    }
    
    function test2($abc){
        mysql_connect("localhost", "用户名错误", "密码错误");
    }
    
    test("abc");
    @test2("abc");
?></code>

Warning: mysql_connect() [function.mysql-connect]: Access denied for user '使用者名稱錯誤'@'localhost' (using password: YES) in D:Projectsns1.php on line 4

word: YES) in D:Projectsns1.php on line 4

word: YES) in D:Projectsns1.php on line 4

🎜test2沒有拋出 Warning.🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn