在代码中抛出合法状态的异常

Mor*_*ten 2 .net c# exception

Exception是一个方便的容器,很有可能用于各种目的.但是可以使用它来处理代码中的合法状态吗?

我的例子:我有一个几何函数,可以在搜索半径内找到最近的对象:

public IPoint FindNearest(IPoint origin, double searchRadius)
{

}
Run Code Online (Sandbox Code Playgroud)

我的想法是,当搜索没有找到命中时,我可以抛出异常.但这是个好主意吗?或者,我可以返回Null(我不喜欢),或返回结果对象而不是Point.

Har*_*san 5

通常,异常表示无效或"特殊"情形.在你的情况下,如果没有找到命中是一个例外情况,它应该总是在通常情况下找到,那么你可以抛出异常.

你应该总是尽量避免抛出异常,因为它的性质很重.如果调用者代码经常调用此方法,并且您的方法导致大量异常,则会使您的程序变慢