首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候最好抛出一个异常,什么时候最好返回一些错误日志'object'?

什么时候最好抛出一个异常,什么时候最好返回一些错误日志'object'?
EN

Stack Overflow用户
提问于 2011-04-18 07:49:29
回答 4查看 10.5K关注 0票数 15

我想知道如何在以下两者之间做出决定:

1)如果要抛出自定义异常或

2)返回具有“CityNotFound”、“ReferenceConstraintBroken”等标志的日志对象。

我一直在读例外情况是昂贵的。如果我只需要知道流程结果的具体细节,在我看来,拥有一个只包含流程必需信息的自定义“流程日志对象”会更有益处。

所以,如果我回到我的问题

什么时候最好抛出一个异常,什么时候最好返回一些错误日志'object‘?

EN

回答 4

Stack Overflow用户

发布于 2011-04-18 08:19:17

如果您关心异常的性能,您可以考虑“测试者-执行者”模式,在大多数情况下可以用来避免它们(在我看来,它还使代码比尝试/捕获更易读)。

代码语言:javascript
复制
// Traditional try catch
try
{
    var record = myDb.myTable.Select(primaryKey);

    // do something with record...
}
catch (RecordNotFoundException)
{
    // The record not found in the database... what to do?
}

// Tester-doer pattern
if (myDb.myTable.RecordExists(primaryKey))
{
    var record = myDb.myTable.Select(primaryKey);

    // do something with record...
}
else
{
    // The record not found in the database... what to do?
}

结果一样,没有例外。代价是您必须自己编写"RecordExists“函数,通常只需执行myTable中的返回计数( PrimaryKey=foo == 1)之类的操作即可。

票数 6
EN

Stack Overflow用户

发布于 2011-04-18 08:00:44

轻微地转动他们的头。考虑一下,我知道如何在函数中处理这个条件吗?代码是否会被频繁调用,以便在编写代码时值得,或者,更普遍地说,这是一个例外吗?

如果大小写发生在函数的常规操作中,则将其作为返回值的一部分处理。如果发生此情况是因为您的函数被滥用或某些资源不可用,则抛出异常。

票数 3
EN

Stack Overflow用户

发布于 2011-04-18 07:52:49

如果调用者本可以阻止异常(比如知道该城市不存在),则抛出一个异常。否则返回错误。

我永远不会返回log对象。它使代码不可读,因为您必须在任何地方添加if语句和特殊处理。最好添加像CheckIfCityExists这样的方法。

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

https://stackoverflow.com/questions/5699959

复制
相关文章

相似问题

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