Enr*_*ent 2 php error-handling exception dry symfony
我正在使用Symfony 2构建一个应用程序,我想知道,当我尝试读取不存在的数组中的索引时,如何处理错误?遗憾的是,这种错误不会抛出异常,因此我无法真正使用try-catch块.
例:
$test = array();
$test["323"]; // Undefined index error!
Run Code Online (Sandbox Code Playgroud)
请,想法如何处理这个错误?
更新:我见过很多解决方案isset.这个问题是我必须对每个数组索引的访问都这样做.谁能为我提供更干的解决方案?
Way*_*tty 13
都:
if(isset($test["323"])){
//Good
}
Run Code Online (Sandbox Code Playgroud)
和
if(array_key_exists('123', $test)){
//Good
}
Run Code Online (Sandbox Code Playgroud)
允许您在尝试使用数组索引之前检查是否已定义数组索引.这不是Symfony特定的错误.每当您尝试访问不存在的数组元素时,都会发生常见的PHP警告.
$val = isset($test["323"]) ? $test["323"] : null;
Run Code Online (Sandbox Code Playgroud)
一种选择是使用set_error_handler()以某种方式模拟异常.以下是一个示例用法,但我确信您可以根据具体用例进行调整:
function my_error_handler($errno,$errstr)
{
/* handle the issue */
return true; // if you want to bypass php's default handler
}
$test = array();
set_error_handler('my_error_handler');
$use_it=$test["323"]; // Undefined index error!
restore_error_handler();
Run Code Online (Sandbox Code Playgroud)
你可以看到,我们"包装"我们的"关键"围绕一段代码set_error_handler()和restore_error_handler().有问题的代码可以像一行一样小,就像整个脚本一样大.当然,临界区越大,错误处理程序就越"智能".
| 归档时间: |
|
| 查看次数: |
10134 次 |
| 最近记录: |