c# - 错误处理:try-catch 还是返回错误代码?
问题描述
我实际上认为我明白了,但需要你的一些额外确认,因为我想理解它并以正确的方式去做!在抽象异常处理和逻辑代码方面,我还没有找到一条直线。所以我试着在你的帮助下更接近它。
假设我将函数称为“foo(0)”:
// Code 1
int foo(int a)
{
int value = 10;
return value/a;
}
这将引发“除以零”异常。
但是如果参数“a”必须在函数“bar”(代码 2)的特定范围内才能返回有效结果(例如在 [5...10] 的范围内),则使用值调用它超出这个范围(例如 3)当然不会抛出异常,除非我定义一个。所以对于这种情况,我定义了一个例外,不是吗?
例如这种方式:
// Code 2
void bar(int b)
{
if (b < 5)
{
throw new ArgumentException("Your input parameter is below minimum acceptable value");
}
else if (b > 10)
{
throw new ArgumentException("Your input parameter is above maximum acceptable value");
}
else
{
output(b);
}
}
还是不应该为此使用例外(我认为它们正是为了这个目的而存在的),而我宁愿这样做?
// Code 3
int bar(int b)
{
int error = 0
if (b < 5)
{
error = -1;
}
else if (b > 10)
{
error = -2;
}
else
{
output(b);
}
return error;
}
感谢您的输入。
干杯
(我问的原因是因为我面前确实有一个已发布软件的源代码,两者都有。我在OOP方面没有太多经验,因此也没有“try-catch”。而且,相信帖子找到了还有我看过的youtube教程,这个话题被误解得很厉害。而且我猜我前面这个软件的开发者确实误解了。如果我错了,请告诉我。)
解决方案
在 C# 中报告错误的惯用方法是通过异常。当然,返回错误代码在技术上是可行的,但这不是 C# 中的处理方式。
推荐阅读
- javascript - Angular Universal (SSR) 堆大小问题
- git - 在 git 中未跟踪的文件不是 .gitignore 的一部分
- swiftui - 如何将 DragGesture 转移到 SwiftUI 中的单独函数?
- flutter - 当应用程序启动时无法获取用户位置
- java - 使用 ProtoBuf 序列化动态 JSON - Java
- android - ViewBinding - 我们是否需要删除 clicklisteners 以避免内存泄漏?
- javascript - 赠品结束时如何与赠品的主持人联系
- python - Discord bot on_join_guild dm 所有人
- ffmpeg - 视频设备配置失败,回退到默认值
- c++ - 应用程序激活时如何将焦点设置为非模态 QDialog?