异常处理
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(); } }
/