主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

错误处理和资源管理

创建 .NET 应用程序时,正确处理运行时错误和管理资源是一种很好的做法。

错误处理

与托管代码一样,在执行 MATLAB® 函数或数据转换期间发生的任何错误都会由标准 .NET 异常发出信号。

与任何其他 .NET 应用程序一样,调用 MATLAB Compiler SDK™ 生成的方法的应用程序可以通过在本地捕获和处理异常或允许调用方法捕获异常来处理错误。

以下是每种错误处理方式的示例。

GetPrimes 示例中,方法本身处理异常。


public double[] GetPrimes(int n)
{
	MWArray primes= null;
	MyPrimesClass myPrimesClass= null;
	try
	 {
			myPrimesClass= new MyPrimesClass();
			primes= myPrimesClass.myprimes((double)n);
			return ((double[])(MWNumericArray)primes).
						  ToVector(MWArrayComponent.Real);
	 }
	catch (Exception ex)
	 {
		Console.WriteLine("Exception: {0}", ex);
		return new double[0];
	 }
}

在下一个示例中,调用 myprimes 的方法没有捕获异常。相反,它的调用方法(即调用 myprimes 的方法的方法)会处理该异常。

public double[] GetPrimes(int n) 
{ 
   MWArray primes= null; 
   MyPrimesClass myPrimesClass= null; 
   try 
     { 
        myPrimesClass= new MyPrimesClass(); 
        primes= myPrimesClass.myprimes((double)n); 
        return ((double[])(MWNumericArray)primes). 
        ToVector(MWArrayComponent.Real); 
     } 

   catch (Exception e) 
     { 
        throw; 
     } 
} 

明确释放资源

通常 Dispose 方法是从 try-finally 模块中的 finally 部分调用的。

try
	{
	  /* Allocate a huge array */
	  MWNumericArray array = new MWNumericArray(1000,1000);
		.
		.  (use the array)
		.
	}
finally
	{
	  /* Explicitly dispose of the managed array and its */
	  /* native resources */
	if (null != array)
		{
		  array.Dispose();
		}
	}

语句 array.Dispose() 释放由托管包装器和原生 MATLAB 数组分配的内存。

MWArray 类提供两种处置方法:Dispose 和静态方法 DisposeArrayDisposeArray 方法更通用,因为它可以处置单个 MWArrayMWArray 类型的数组数组。