Code Patterns: 打破只做一次的循环
Code Patterns: Breaking from a do-once loop
考虑以下设计模式:
do {
// Some logic here
if (AnErrorOccurs()) {
break;
}
// Some more logic here
if (ADifferentErrorOccurs()) {
break;
}
// Code completed successfully
return someValue;
} while (false);
// Lengthy error-handling code here
return errorCode;
这样使用循环合适吗?我只是想要 break
语句的功能,这样我就可以将错误处理代码放在一个地方。一个单独的方法也可以工作,没错,但是假设范围内有大量变量作为参数传递会很笨重或不安全。
或者 try-finally
模式是处理这种情况的更好方法吗?或者抛出一大堆自定义异常?我只是想看看其他人如何处理它以获得最简洁和最可维护的代码。
如果你想处理异常,我认为你应该使用 try catch
语句而不是 do while
,因为代码应该能够自我记录,而不需要在这里和那里添加注释。如果你想在你的代码中处理异常, try catch
语句不是更合适吗?话虽如此,我认为最好在 try catch
中使用自定义异常来处理您的特定异常。
在需要任何特定条件的方法中将抛出异常。例如,Convert.toInt32(string s)
here。当条件不满足时,此 Convert.toInt32(string s)
将抛出 FormatException
或 OverflowException
。
该方法中没有 try catch
。 try catch
将放置在调用 Convert.toInt32(string s)
.
的方法中
考虑以下设计模式:
do {
// Some logic here
if (AnErrorOccurs()) {
break;
}
// Some more logic here
if (ADifferentErrorOccurs()) {
break;
}
// Code completed successfully
return someValue;
} while (false);
// Lengthy error-handling code here
return errorCode;
这样使用循环合适吗?我只是想要 break
语句的功能,这样我就可以将错误处理代码放在一个地方。一个单独的方法也可以工作,没错,但是假设范围内有大量变量作为参数传递会很笨重或不安全。
或者 try-finally
模式是处理这种情况的更好方法吗?或者抛出一大堆自定义异常?我只是想看看其他人如何处理它以获得最简洁和最可维护的代码。
如果你想处理异常,我认为你应该使用 try catch
语句而不是 do while
,因为代码应该能够自我记录,而不需要在这里和那里添加注释。如果你想在你的代码中处理异常, try catch
语句不是更合适吗?话虽如此,我认为最好在 try catch
中使用自定义异常来处理您的特定异常。
在需要任何特定条件的方法中将抛出异常。例如,Convert.toInt32(string s)
here。当条件不满足时,此 Convert.toInt32(string s)
将抛出 FormatException
或 OverflowException
。
该方法中没有 try catch
。 try catch
将放置在调用 Convert.toInt32(string s)
.