【问题标题】:Why does $my_item->save fail with Rose::DB::Object?为什么 $my_item->save 使用 Rose::DB::Object 失败?
【发布时间】:2013-04-16 09:56:49
【问题描述】:

我正在尝试将数据简单地添加到数据库表 (PostgreSQL)。一开始我连一个简单的都搞不定

$my_item = $_item_class->new(...);

工作。我发现我在代码中拼写的字段与我在“模型”代码中的拼写不同。

但是,现在,这是可行的,但是当我尝试时:

$my_item->save;

似乎抛出了异常。所有这一切都发生在 eval {...} 结构中,我想捕捉异常并看看出了什么问题,但我不知道该怎么做。

为什么像“保存”这样的东西会在这里失败?我检查了所有内容,一切正常(当然!)。

而且,我如何捕捉似乎被抛出的异常?

谢谢!

【问题讨论】:

  • 这将有助于查看您的数据库架构、$_item_class 的代码,或者至少是某种错误消息。
  • 谢谢约翰。我已经弄清楚了这个问题,我会尽快发布一个关于它的帖子。是的,数据库架构和 $_item_class 代码是关键。
  • 您应该在这里回答您自己的问题,以便其他人可以看到解决方案。
  • 是的,我一定会的。

标签: rose-db-object


【解决方案1】:

这一切都是我自己想出来的。这很简单。当我对它进行编辑时,我不知何故在我的课堂上复制了一个字段。就这些。该类只是在类的哈希表中指定了两个同名字段,两者具有相同的特征。当我删除其中一个时,代码就起作用了。

关于我关于如何捕获异常的第二个问题,我必须学习如何拥有一个

if ($@) {
    .
    .
    .
}

就在我的“eval {...}”结构之后。因为我是 Perl 的新手,所以我不明白这一点。但是,实际上很容易弄清楚。我的问题是我正在使用一些代码作为我的模型,但没有这样做,而是命名了在其“eval {...}”代码中引发的特定异常。所以,我认为我必须知道 Rose::DB::Object 调用可能引发的异常的名称,但我在文档中找不到任何此类异常。当我了解“if ($@) {...}”时,我能够在 $@ 中打印出报告的异常,并且从中我能够看到我上面提到的重复字段的问题。

仅此而已。现在一切正常。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多