我正在使用Codeigniter。
我开发了各种功能,如果按预期使用,它们可以很好地工作。
一个这样的脚本,一个whois脚本检查域名的所有者。 但是,如果用户键入了无效的域名,则会在那里和任何地方抛出各种错误。
例如,如果用户键入stack.-com,则这当然不是有效域。因此,当我调用执行查询的助手时,不返回任何结果并返回各种错误。当我尝试向用户显示空数组时也存在错误。
我的问题与错误有关。
我可以使用preg_match并检查域是否有效。如果没有,我设置一个我打算输出给用户的错误变量。
然而,在我的控制器到达判断是否显示错误页面或结果页面的if else语句之前,程序正在运行查询,并且访问方法以获取没有错误的数据将使数据通过到结果视图。
I.E我知道有错误,但仍然显示很多其他错误,因为无效的项目正在传递给我的其他脚本。
使用Codeigniter和MVC设置,捕获错误并将其显示给用户的最佳方法是什么,而不必使用一遍又一遍地执行相同操作的异常?
由于
使用IDEA编辑
try
{
$this->load->model('whois');
$this->whois->process('domain.-com');
}
catch
{
$this->load->view('errors',$errordata);
$this->load->view('footer');
die;
}
$this->load->view('normal_content');
$this->load->view('footer');
这是使用codeigniter使用异常的建议设置吗?在我的模型中,如果出现问题,该函数将抛出异常。然后catch语句将显示它们并死掉,因此不显示内容..它似乎不正确..?
答案 0 :(得分:1)
这是我通常处理这个问题的方式:
示例代码:
<?php
...
public function form()
{
if (strtoupper($this->input->server('REQUEST_METHOD')) == 'POST')
{
try {
// handle all your validation here
redirect('success_route');
exit;
}
catch (Exception $e)
{
// this could get a little fancier, but a simple solution is to pass the exception
// directly to the view. you could also load the `errors` view here, but return the
// content to a variable and pass to your full view
$this->load->vars('exception', $e);
}
}
$this->load->view('normal_content');
$this->load->view('footer');
}
...
答案 1 :(得分:0)
您必须执行以下操作
1)database.php:$ db ['default'] ['db_debug'] = FALSE;
2)在您的模态文件中
try {
$query_str = "SELECT * FROM `pro_property` WHERE username = '".$username."'";
$result = $this->db->query($query_str);
if (!$result)
{
throw new Exception('error in query');
return false;
}
return $result;
} catch (Exception $e) {
print_r($e);
}