首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理开关语句

处理开关语句
EN

Stack Overflow用户
提问于 2011-11-24 03:58:54
回答 3查看 95关注 0票数 0

处理以下情况的首选方法是什么:

代码语言:javascript
运行
复制
switch (numberOfActualBytes)
{
    case 1: return something1;
    case 2: return something2;
    case 3: return something3;
    case 4: return something4;
}

我确信,由于使用过的合同,numberOfActualBytes1-4范围内。

如何编写不会导致not all code paths return a value错误的代码?

我怀疑我应该在这个函数的末尾或者在default switch case中抛出一些异常,但是可能有一个更好的解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-24 04:01:33

如果应用程序能够维护1..4协议,我更愿意在default情况下抛出超出范围的异常。异常反映了调用者的期望,他们将给我提供良好的数据。

如果您的编译器无法确定default案例解决了并非所有的代码路径,那么将return放在switch之后。但是c#编译器会把它做对了。

票数 8
EN

Stack Overflow用户

发布于 2011-11-24 04:00:29

default: return error_code将是我的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2011-11-24 04:03:57

我可能会做这样的事。

代码语言:javascript
运行
复制
declare temp_something = a default value; //Used to check for error.

switch (numberOfActualBytes)
{
    case 1: temp_something = something1; break;
    case 2: temp_something = something2; break;
    case 3: temp_something = something3; break;
    case 4: temp_something = something4; break;
}
return temp_something;

这样做不也一样吗?

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

https://stackoverflow.com/questions/8252065

复制
相关文章

相似问题

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