首页 > 技术文章 > C#可视化程序设计第三章(3,4)

H-Yan 2020-05-21 15:54 原文

异常处理

1.异常处理介绍

■任何完美的应用程序和技术高明的程序员,都不能保证程序绝对不出差错。

■在代码中加入异常处理可以捕获末知的异常,并对异常进行处理,可以防止应用程序的崩溃,

并向用户友好地给出错误提示。

 

2.程序中的错误可以分为三类:

■编译错误:

在程序编译时产生的错误,通常由错误的语法或使用的资源不存在等原因引起。产生编译错误时程序无法

运行,编译错误可以通过集成开发环境VS发现。

■逻辑错误:

逻辑错误,不影响程序的正常运行,但会导致实际运行结果与预期结果不-致。通常是算法出现了错误,

可以通过调试程序,对比期望值和实际值发现。

■异常:

在程序运行过程中,干扰程序正常运行时产生的错误称为异常。异常是无法避免的,但是能够预计。为了

使应用程序出现异常时不至于崩溃终止,必须对可能出现异常的代码进行异常处理。

异常处理结构:

//try...catch结构
//语法:
try{
  //可能出现的异常代码
}
catch (Exception e){
  //捕获异常代码,进行异常处理的代码
}

//try...catch...finally结构
try{
  //可能出现的异常代码
}
catch (Exception e){
  //捕获异常代码,进行异常处理的代码
}
finally{
  //释放代码
}

//try.......finally结构
try{
  //可能异常代码
}
finally{
  //释放代码
}

其中的Exception类的对象包含异常详细信息的对象,Exception 对象的常用属性有:

(1) Message: 包含辅助性文字说明,指出抛出异常的原因。

(2) Source:包含生成异常的程序集名称。

注意:

■try块不能省略,catch和finally块可以省略, 但不能同时省略

■finally块无论是否发生异常,都会被执行。

            //定义连接字符串
            SqlConnection conn = null;
            SqlDataReader reader = null;
            try
            {
                string sql = "server=.;database=GMP;uid=sa;pwd=985199";//连接字符串
                conn = new SqlConnection(sql);//创对象
                conn.Open();//打开
                if (conn.State == System.Data.ConnectionState.Open)
                {
                    Console.WriteLine("连接成功");
                    string cz = "select Name,Grader,Emal,Address from Users"; //sql语句
                    //创建command对象
                    SqlCommand cmd = new SqlCommand(cz, conn);
                    reader = cmd.ExecuteReader();//执行sql命令返回sqldatareader对象
                    int i = 1;//设序号
                    Console.WriteLine("ID\t姓名\t性别\t邮箱\t\t地址");
                    while (reader.Read())
                    {
                        Console.WriteLine(i + "\t{0}\t{1}\t{2}\t\t{3}", reader["Name"], reader["Grader"], reader["Emal"], reader["Address"]);
                        i++;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
                if (conn != null)
                {
                    conn.Close();
                }
            }

3.DBHelper类

 

 class DBHelper
    {  
        /// <summary>
        /// 
        /// </summary>
        //类里面只能是属性,方法,定义字段
        public static string cons = "";
        public static  SqlConnection conn ;
        //三个方法:连接数据库方法,执行增删改方法,执行查询方法
        //1  
        public static bool connect() {
            conn = new SqlConnection(cons);
            conn.Open();
            if (conn.State == System.Data.ConnectionState.Open)
            {             
                return true;
            }
            else {             
                return false;
            }
            
        }
        //2
        public static int Excut(string sqlstr) {
            SqlCommand cmd = new SqlCommand(sqlstr, conn);
            int i = cmd.ExecuteNonQuery();         
            return i;
        }
        //3
        public static SqlDataReader Excutread(string sqlstr) {
            SqlCommand cmd = new SqlCommand(sqlstr,conn);
            SqlDataReader  reader = cmd.ExecuteReader();  
            return reader;
        }
        public static void gbi() {
            conn.Close();
        }
    }

 

 static void Main(string[] args)
        {
            DBHelper.cons = "server=.;database=GMP;uid=sa;pwd=985199";
            string yj = "select Name from Users";
            if (DBHelper.connect()) {
                SqlDataReader reader = DBHelper.Excutread(yj);
                while (reader.Read()) {
                Console.WriteLine(reader["Name"]);
            }
                DBHelper.gbi();
            }
            }

/

 

推荐阅读