首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP Try Catch块中引发异常

在PHP Try Catch块中引发异常
EN

Stack Overflow用户
提问于 2012-01-28 06:55:40
回答 4查看 105K关注 0票数 78

我在Drupal6的.module文件中有一个PHP函数。我正在尝试在执行更密集的任务(如数据库查询)之前运行初始变量验证。在C#中,我过去常常在Try代码块的开头实现IF语句,如果验证失败,就会抛出新的异常。抛出的异常将在Catch块中捕获。以下是我的PHP代码:

function _modulename_getData($field, $table) {
  try {
    if (empty($field)) {
      throw new Exception("The field is undefined."); 
    }
    // rest of code here...
  }
  catch (Exception $e) {
    throw $e->getMessage();
  }
}

但是,当我尝试运行代码时,它告诉我只能在Catch块中抛出对象。

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-28 07:04:42

function _modulename_getData($field, $table) {
  try {
    if (empty($field)) {
      throw new Exception("The field is undefined."); 
    }
    // rest of code here...
  }
  catch (Exception $e) {
    /*
        Here you can either echo the exception message like: 
        echo $e->getMessage(); 

        Or you can throw the Exception Object $e like:
        throw $e;
    */
  }
}
票数 113
EN

Stack Overflow用户

发布于 2012-01-28 07:06:03

重新抛出do

 throw $e;

而不是信息。

票数 72
EN

Stack Overflow用户

发布于 2012-01-28 07:02:59

你试图抛出一个string

throw $e->getMessage();

您只能抛出实现\Throwable的对象,例如\Exception

作为附注:异常通常是为了定义应用程序的异常状态,而不是为了验证后的错误消息。当用户给你提供无效数据时,这不是一个例外

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9041173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档