ImG*_*reg 1 c# try-catch winforms
我正在寻找在我所拥有的ac#winforms类中处理错误的最佳方法.该应用程序的要点是它有一个数据分析器,可以分析统计数据和其他类似的东西.但是,我正在寻找处理ABORT的正确方法.
例如,我有一个名为Analyzer的类
namespace PHOEBE
{
public class Analyzer
{
public Analyzer(){
DoAnalysis();
DoFurtherAnalysis();
}
public class DoAnalysis(){
try{
Convert.ToInt32("someNumber...."); //obviously fails..
}
catch{
//ERROR OCCURRED, ABORT ALL ANALYSIS
return;
}
}
}
Run Code Online (Sandbox Code Playgroud)
显然,当调用DoAnalysis()时,会发生错误.catch块将捕获异常.但是,当发生此捕获时,它将返回到构造函数并运行DoFurtherAnalysis().这是个问题.
我知道你可以从每个方法返回值,其中每个值表示某个结果(即1 =成功,0 =失败).但是,我调用的很多方法都使用了返回值.我还可以使用一个在发生错误时被标记的布尔值,并在从构造函数调用下一个方法之前检查该值,但每次检查此值都很烦人且重复.
我真的希望某种类似"我可以使用的中止机制".还有其他解决方法吗?对此有任何有趣的解决方法吗?
假设从表单调用此类.
Jon*_*eet 11
只是让异常传播起来 - 如果你能真正处理它,你应该只捕获异常.例外是 .NET 中的"中止机制".你现在正在吞下一切都出错的信号,然后回归好像一切都好.
一般来说,我发现捕获异常非常罕见 - 通常它位于顶层(因为一个请求阻止整个服务器停止)或者为了保持适当的抽象而将一种异常转换为另一种异常.
我真的希望某种类似"我可以使用的中止机制".还有其他解决方法吗?对此有任何有趣的解决方法吗?
就在这里.它被称为异常处理.
让我们重写你的代码:
namespace PHOEBE
{
public class Analyzer
{
public Analyzer()
{
try
{
DoAnalysis();
DoFurtherAnalysis();
}
catch
{
//ERROR OCCURRED, ABORT ALL ANALYSIS
return;
}
}
public class DoAnalysis()
{
Convert.ToInt32("someNumber...."); //obviously fails..
}
}
Run Code Online (Sandbox Code Playgroud)
现在,构造函数将中止而不是运行第二个方法,因为异常将"冒泡"并被捕获到您想要的位置.
在一个不相关的注释:请尝试捕获尽可能具体的例外,在这种情况下a FormatException
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |