[原创]c#中的异常处理之基础学习

--------
    在编写代码的时候,除了关心一个程序是否正常运行,对于意料之外的突发问题也要能够预料,并能直观地提示!
所以,异常处理是非常重要的:
    c#是面向对象的,所以,在c#中,所有的异常都是 System.Exception类的实例。其实呢,检查异常,除了:
try
{
    
}

catch ()
{
}

一般这个是用来检测整个程序的,局部检测的,我们可以使用关键词 
checked 和 unchecked ,简单介绍下,一个例子:
using System;
public class A
{        
    
static int x=1111111111;
    
static int y=1111111111;        
    
public static void Main()  //算术溢出
    {
        
/* 检查异常
        checked
        {
            Console.WriteLine(x*y);
        }
        
*/

        
//不检查异常,对于常量表达式的,一般都默认为unchecked的,不是常量表达式的那不一定,看情况
        unchecked
        
{
            Console.WriteLine(x
*y);
        }

    
    }

}

-----
try
{
    
//抛出异常,用throw 但是必须有表达式
}

catch ()
{
    
//接收,可以有多个catch()来接受特定的异常,这个从从抛出到接收也叫做异常传播
}

finally
{

}


-------------
一个很好的例子,我摘下来了,说明了下关键:
using System;
public class IsTest 
{
    
//函数
    static void f()
    
{
        
try
        
{
            g();
//如果在try里使用throw  ,必须有表达式
        }

        
catch(Exception e)
        
{
            Console.WriteLine(
"Exception :{0}",e);
            e
=new Exception("f");
            
throw ;// 想一下,如果变成 throw e; 又是如何?那么,这个捕获的异常会因为在这个catch 中被改变而改变
        }

    }

    
//一个直接抛出异常的函数g()
    static void g()
    
{
    
throw new Exception("g");
    }

    
//主函数
    public static void Main() 
    
{
        
try
        
{
            f();
        }

        
catch(Exception e)
        
{
            Console.WriteLine(
"Excption in Main():{0}",e.Message);
            
        }

    
    }

}

显示为:
Exception :g
Exception 
in Main():g
----------
如果,在这个异常定义的最好加上 
finally{}会怎么样? 定义:无论什么,如果这个异常定义中有 finally{}的,都要被
调用的!我们也可以改变异常的输出信息,举个小例子:
using System;
public class IsTest 
{

    
public static void Main() 
    
{
        
try
        
{
            
//抛出异常
            throw new Exception("哈哈,我自己定义的输出信息!");
        }

        
catch(Exception e)
        
{
            
//捕获异常,并输出
            Console.WriteLine(e.Message);
        }

        
//有finally 
        finally
        
{
            Console.WriteLine(
"我就是还要输出信息!");
        }

    
    }

}




posted on 2007-07-27 18:54  寸芒  阅读(217)  评论(0编辑  收藏  举报

导航