zoukankan      html  css  js  c++  java
  • 第五讲 C#中的异常处理

    *异常类型
    每种异常类型都是一个类
    两种大分类
    System.SystemException
    System.ApplicactionException


    *.NET中异常处理方式
    异常被对象所表现而不是错误代码。
    异常的产生是通过throwing一个该异常的对象实现的。
    异常的捕获是通过catch该异常的对象。
    命名上可以读出是哪类异常:DivideByZeroException
    *捕获异常try-catch
    当代码段有可能发生异常的时候,我们应该把该代码放置在try中。
    捕获到异常后的处理方法放置到catch中。
    try
    {
     s=//user's input;
     i=int.Parse(s);
    }
    catch
    {
     messageBox.show("Invalid input ,please try again.");
     return;
    }
    为每个可能的Exception定制解决方法

    try
    {
     s=//user's input;
     i=int.Parse(s);
    }
    catch(FormatException)
    {
     MessageBox.Show("Please enter a numeric value.");
     return;
    }
    catch(OverflowException)
    {
     MessageBox.Show("Value is too Large/Small!");
     return;
    }
    catch(Exception ex)
    {
     string msg;
     msg=string.Format("Invalid input .\n\n[Error={0}]",ex.Message);
     return;
    }
    异常处理的系统流程
    当程序产生一个异常的时候,它会自动抛出异常,此时.NET进入“异常处理模式”
    .NET查找后面是否存在catch子句
    if(catch block if found)
     .NEt executes catch & "exception mode" is over
    else
     .NET teminates execution

    暗示
    如果你不想让程序被错误所终止,你要在适当的地方使用try-catch
    如果你想让异常处理继续,你要在catch子句中写出一些具体的方法。
    空的cactch段相当于给异常放行。
    在进行完catch子句后,程序将继续执行除非
    return 返回
    throw  再次抛出异常
    exit   程序退出

    try-catch可以嵌套
    try
    {
     <<Perform operation(s)>>
    }
    catch(Exception ex)
    {
     try
     {
       <<try various recovery strategies>>
     }
     catch
     {
      throw ex;
     }
    }

    *异常捕获的顺序
    必须正确排列捕获异常的catch子句
    范围小的Exception放在前面的catch子句
    即如果Exception之间有继承关系,把子类放在前面的catch子句中,把父类放到后面的catch子句中。

    使用try-catch-finally来确保一些收尾工作。

    设计自己的异常
    创建独特的异常,使它适合于特定的应用程序
    public class TooManyItemsException:Exception
    {
     public TooManyItemsException():base(@"You add too many items to

    this container.")()
    }

    public class TooManyItemsTest
    {
     public void GenerateException(int i)
     {
      try
       {
        if(i>2) throw new TooManyItemsException();
       }
     }
    }

  • 相关阅读:
    CSS中position小解
    position
    mac默认安装postgresql, 如何让postgresql可以远程访问
    The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.0.
    active admin gem error
    psql 无法添加超级用户
    ubuntu 15.04 安装Balsamiq Mockups 3
    Rails html 写public里图片的路径
    rails c 历史命令
    undefined local variable or method `per' for []:ActiveRecord::Relation
  • 原文地址:https://www.cnblogs.com/iceberg2008/p/1398911.html
Copyright © 2011-2022 走看看