【发布时间】:2020-10-26 12:51:25
【问题描述】:
我正在为一个 API 编写一个函数,我只想在 try 语句中调用它,以便开发人员可以处理其自定义异常。
除了在我们的文档中夸大错误处理的使用或使用 #warning 预处理器指令之外,我想知道如果从 try 语句之外调用函数,是否可以在编译时引发错误?
可以这样做吗?
感谢所有帮助。提前致谢!
【问题讨论】:
-
如果这行得通,我会感到非常惊讶,我肯定会认为这是糟糕的设计。如果你能解释你的情况和原因,我们可以给你更好的选择
-
我非常怀疑这是可能的。你应该对你的代码负责,你的代码的使用者应该对他们的代码负责。你能做的最好的就是给他们详细的错误和自定义异常,听起来就像你一样。
-
已检查的异常在 C# 中会很糟糕。想象一下修改一个低级方法以使用一个数组,然后必须将
throws IndexOutOfRangeException添加到它以及直接或间接使用它的每个方法。或者必须将throws DivideByZeroException添加到使用变量除数直接或间接进行整数除法的任何方法中。 -
您可以通过在处理错误的方法上使用
Func参数来做一些接近的事情。例如。它会被称为MyAPI(someInputParam, error => { /* code to handle error */ }); -
有问题的代码是一个抽象的规划系统,开发人员负责自己定义场景描述、代理、域和方法。如果识别出计划中的严重错误,系统将引发异常,例如场景描述中缺少计划所需的对象。开发人员将希望通过在其代理上调用子例程来处理这些异常,以解决手头的问题,例如定位对象。
标签: c# error-handling compiler-warnings preprocessor