我听过这句话:
“让调用堆栈放松多个级别”
在异常处理中被提及。
这是什么意思?
有问题的语言是C#。
由于
答案 0 :(得分:1)
简单来说,您可以将调用堆栈视为如下:
因此,当调用堆栈展开多个级别时,会立即关闭多个堆栈帧 - 就像返回一系列嵌套方法调用(不只是单个方法调用)一样。
就例外而言:
对于术语有点快速松散道歉。
答案 1 :(得分:0)
这意味着让异常退出抛出它的函数并允许其调用者捕获函数并处理它。
答案 2 :(得分:0)
作为一般原则,最好让堆栈上尽可能低的方法(特别是它仍有意义或可以用它完成的东西)捕获异常。这减少了冗余和其他不必要的try ... catch块,并使大多数适当处理异常的代码实际上包含了这样做的逻辑。
<强>更新强>
考虑以下相当一般(并且有点人为)的例子:
public abstract class ThrowRandomIOExceptions
{
public void SafeIOOperation(string fileName, IModel model)
{
try
{
DoSomeIOOperation(fileName, model);
}
catch(FileNotFoundException ex)
{
// Handle the exception so the children don't have to.
}
}
public abstract void DoSomeIOOperation(string fileName, IModel model);
}
public class WriteCSV : ThrowRandomIOExceptions
{
public void DoSomeIOOperation(string fileName, IModel model)
{
// Write the model in comma delimited format
}
}
public class WriteTSV : ThrowRandomIOExceptions
{
public void DoSomeIOOperation(string fileName, IModel model)
{
// Write the model in tab delimited format
}
}
处理基类中的FileNotFoundException
可以避免子项必须包含自己的try ... catch,并保证不会处理来自不正确文件名的异常。