【问题标题】:php how to catch exception when assigning to variablephp如何在分配给变量时捕获异常
【发布时间】:2012-07-20 23:00:30
【问题描述】:

我的代码中有一些类。从这些类中我启动对象,比如说

$c = new category ($myGoodObject->categoryId); 

这应该给出 myGoodObject 的类别对象。但是,例如,如果在数据库中没有定义 1000 的 categoryId,则该类将引发异常。

我如何捕捉到这个?从有时可能不存在的数据库中启动/加载对象的最佳实践是什么?如何避免失败?

谢谢!

编辑:

我试过了:

try {
$c = new category (1000);
} catch (Exception $e) {return false;}

但它没有用。

【问题讨论】:

  • 关于您的编辑,“它不起作用”是什么意思?它崩溃了吗?抛出错误?不创建对象?
  • 仍然只给我未捕获的异常

标签: php exception-handling


【解决方案1】:
try
{
    $c = new category ($myGoodObject->categoryId); 
} 
catch (Exception $e) 
{
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

作为最佳实践,您应该首先尝试读取数据库以查看该值是否存在,如果不存在,则不要尝试创建对象,从而避免需要异常。

【讨论】:

  • 谢谢,category 类抛出异常时它会起作用吗?
  • 是的,try 块中引发异常的任何内容都将被捕获到相关的catch 块中
【解决方案2】:

如果抛出异常,请使用 try..catch 块

try {
   //try assigning 
catch (Exception $e) {
   //do something
}

查看here 了解有关异常的更多详细信息

【讨论】:

    【解决方案3】:

    不要抓住它,在使用之前确保它在那里......

    if(isset($myGoodObject->categoryId)){
        $c = new category ($myGoodObject->categoryId); 
        //...
    }
    

    【讨论】:

    • 如果它抛出异常为什么不尝试处理它?
    • 我误解了这个问题,我以为问题是在询问 $myGoodObject 上的 categoryId 是否未定义。
    猜你喜欢
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2017-09-26
    • 2014-03-04
    相关资源
    最近更新 更多