c#异常处理的小例子

176 阅读1分钟

程序运行结果如下:
在这里插入图片描述
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class RectPrimary
{
private double dWidth = 0d;
private double dHeight = 0d;
public void setWidth(double dlen)
{
dWidth = dlen;
}
public void setHeight(double dlen)
{
dHeight = dlen;
}
public double getWidth()
{
return dWidth;
}
public double getHeight()
{
return dHeight;
}
public static RectPrimary operator+ (RectPrimary rc1,RectPrimary rc2)
{
RectPrimary tempRect = new RectPrimary();
tempRect.setWidth(rc1.getWidth()+rc2.getWidth());
tempRect.setHeight(rc1.getHeight()+rc2.getHeight());
return tempRect;
}
}
class Program
{
public int division(int[] num1)
{
int nResult = 0;
nResult = num1[0] / num1[1];
return nResult;
}
static void Main(string[] args)
{
Program pg = new Program();
int nresult = 0;
int[] anum = new int[1] {1};
int[] anum2 = new int[2] { 1,0 };
try
{
nresult = pg.division(anum);//被除数为0的异常
nresult = pg.division(anum2);//数组越界的异常(当程序运行完上一行的时候,系统就捕捉到了异常,此时,本行代码就会被跳过!)

        }
        catch(DivideByZeroException e)//被除数为0的异常
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        catch(IndexOutOfRangeException e)//处理当方法指向超出范围的数组索引时生成的错误。
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        catch(System.IO.IOException e)//	处理 I/O 错误。
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        catch (ArrayTypeMismatchException e)//	处理当数组类型不匹配时生成的错误。
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        catch (NullReferenceException e)//	处理当依从一个空对象时生成的错误。
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        catch (InvalidCastException e)//	处理在类型转换期间生成的错误。
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        catch (OutOfMemoryException e)//	处理空闲内存不足生成的错误。
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        catch (StackOverflowException e)//	处理栈溢出生成的错误。
        {
            Console.WriteLine("Exception caught:{0}", e);
        }
        finally
        {
            Console.WriteLine("Result :{0}", nresult);//finally 块用于执行给定的语句,不管异常是否被抛出都会执行
        }
        Console.ReadKey();
    }

}

}