[英]Exceptions handle
我需要知道这两种处理异常的女巫更好,为什么? 或者其他一些做得更好的方法。
try{
if (String.IsNullOrEmpty(filePath))
{
throw new ArgumentNullException("The path is null or empty.", "filePath");
}
或者
try{
if (String.IsNullOrEmpty(filePath))
{
Console.WriteLine("The path is null or empty");
}
我会推荐第二种方法,除了在这种情况下你不需要 try/catch。 Exceptions 用于处理异常情况。 如果您可以使用if
条件防止这些情况,您应该更喜欢这种情况。 如果您是一些性能优化狂,您可能已经知道与测试条件相比,抛出和捕获异常可能更昂贵。
如果没有路径会破坏整个应用程序流程,那么抛出异常是一个好主意,这样您就可以恢复应用程序的 state 以再次尝试,或者向用户显示一个对话框。
另一方面, Console.WriteLine("The path is null or empty");
只是通知用户情况并继续前进。 如果您的执行流程没有受到损害,这将为您的应用程序增加最小的开销,因此更可取。
改用代码合同。 特别是对于先决条件(即您的示例)之类的事情。
如果情况是预期的错误,请使用返回码或类似的。 像不存在的文件或类似的文件
如果是意外情况(null 作为参数),请使用 excpetion。
异常处理是昂贵的,所以要明智地使用。
hth
马里奥
好吧,首先在第二个代码中你不会抛出任何异常,你只需向控制台写入一条消息。 这意味着第二个不会在 windows forms 或 wpf 应用程序或更糟糕的 Z2567A5EC9705EB7ACDZ 应用程序中发出任何信号。 除此之外,通过抛出异常,您可以在应用程序的另一个阶段拦截它,并采取相应的行为,而 Console.WriteLine 仅特定于您调用它的 scope。
您可能还想考虑抛出异常是否合适。 这发生在您的代码可以温和地处理“异常”情况的所有情况下,例如通过提供默认值等。
我不能肯定地说,因为您的程序的 rest 不存在; 但我猜第一个选项会杀死你的程序,而第二个选项只是在控制台上打印一些东西,然后继续你的程序的 rest。 所以这个问题的答案更多地取决于你想要它做什么? 当这种情况发生时,想要程序死掉吗? 抛出异常并且不处理它。 想要在发生这种情况时重新提示用户? 然后使用您的第二个选项,但将您的 IF 语句变成一个 while 循环,并一直提示直到条件不再为真。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.