自定义异常和抛出异常
时间 2021-08-14
标签
sql
数据库
小程序
ide
测试
this
.net
orm
视频
继承
最近在研究winform,由于这玩意很差用文字描写,因此就没写博客了。不过今天遇到须要大书特书的东西,赶忙记下来省得忘记了。
话说昨天我看了ado.net第一部分的视频,主要讲了SqlConnection,SqlCommand,SqlDataReader。因此我今天就写了个小程序来测试。期间牵扯到写入数据库,根据SQL语句显示数据等等,其中都要先判断一个东西sql数据库的链接状态,当状态为Open时候才能进行读取和写入数据,当状态为Closed时候提示错误要求先打开数据库。
开始我老老实实的在每一个操做前写if(conn.State.ToString()=="Closed"){},后来一想,为啥不写一个方法来判断当前链接状态,若是是关闭就中断操做提示错误?每一个操做前调用一下就OK了,省时省力。
想法简单,实现起来有难度,开始写的是
private
void connzt()
{
if(conn.State.ToString()==
"Closed")
{
break;
}
}
运行报错,提示没有课中断的循环。想了下break确实只能中断循环。
而后问了问别人,知道须要先定义异常,而后用throw抛出异常,以后在外部try中捕获这个异常就能够了。嗯嗯,开干。
首先定义异常类,从系统异常类中继承方法再重写
public
class adoconexp : Exception
{
private
string mymessage;
public adoconexp(
string message)
:
base()
{
mymessage = message;
}
//重写Message方法
public
override
string Message
{
get
{
return mymessage;
}
}
}
而后定义判断链接的方法调用本身定义的异常类并抛出
private
void connzt()
{
if(conn.State.ToString()==
"Closed")
{
throw
new adoconexp(
"数据库还在未链接!!!!");
}
}
最后在别的方法中调用它
private
void button5_Click(
object sender, EventArgs e)
{
try
{
connzt();
//用判断方法先判断一次
MessageBox.Show(
"数据库是打开的");
}
catch(adoconexp x)
//使用本身定义的异常
{
MessageBox.Show(x.Message);
}
}
有朋友提示,能够用conn.State==ConnectionState.Closed来判断是否关闭,这个比我那个方便。
大功告成,嘿嘿。