社区
C#
帖子详情
捕捉异常
tony-src
2010-12-14 12:45:29
若存在一个DBHelper类,用来作数据库操作的,如果try{}catch{}在DBHelper类里面做的话...异常被抛出,但调用这个类的方法如果还没执行完...抛出异常后,它还在继续执行;
大侠们有什么办法处理这种数据库异常呢?
如果我异常在外面做的话;数据库又怎么关闭呢?
...全文
117
11
打赏
收藏
捕捉异常
若存在一个DBHelper类,用来作数据库操作的,如果try{}catch{}在DBHelper类里面做的话...异常被抛出,但调用这个类的方法如果还没执行完...抛出异常后,它还在继续执行; 大侠们有什么办法处理这种数据库异常呢? 如果我异常在外面做的话;数据库又怎么关闭呢?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pfp251
2010-12-15
打赏
举报
回复
DBHelper如果是无返回的值的数据库操作可以让方法返回一个bool类型的值,操作成功返回true,操作不成功返回false
try
{
//数据库操作代码
return true
}
catch(Exception ex)
{
//写日志
return false
}
finally
{
//关闭数据库连接
}
如果是有返回值的数据库操作,操作成功返回数据集,不成功则返回空,在程序外可以判断
try
{
//数据库操作代码
return 数据集}
catch(Exception ex)
{
//写日志
return null
}
finally
{
//关闭数据库连接
}
tony-src
2010-12-15
打赏
举报
回复
[Quote=引用 8 楼 jacky_341086 的回复:]
引用 6 楼 winner213 的回复:
两种方法,随LZ喜欢:
1. DBHelper 里面用try catch,那么DBHelper里面的每一个Public 函数都要有一个Return值,用户在调用时可以根据这个Return值走你的代码逻辑.
2. DBHelper 里面不用Try catch,用Throw exception,在外面扑捉
那怎么关闭SQL连接???这个我之前……
[/Quote]
我现在用的一般都是第一种方法!!!!
tony-src
2010-12-15
打赏
举报
回复
[Quote=引用 6 楼 winner213 的回复:]
两种方法,随LZ喜欢:
1. DBHelper 里面用try catch,那么DBHelper里面的每一个Public 函数都要有一个Return值,用户在调用时可以根据这个Return值走你的代码逻辑.
2. DBHelper 里面不用Try catch,用Throw exception,在外面扑捉
[/Quote]
那怎么关闭SQL连接???这个我之前想过的~~~~
tony-src
2010-12-15
打赏
举报
回复
[Quote=引用 3 楼 svview 的回复:]
楼主意思是想捕捉这个异常,然后返回给上级吧?只要捕捉到异常,程序就停止?是吧?
[/Quote]
是的~~~
winner213
2010-12-15
打赏
举报
回复
[Quote=引用 9 楼 jacky_341086 的回复:]
引用 8 楼 jacky_341086 的回复:
引用 6 楼 winner213 的回复:
两种方法,随LZ喜欢:
1. DBHelper 里面用try catch,那么DBHelper里面的每一个Public 函数都要有一个Return值,用户在调用时可以根据这个Return值走你的代码逻辑.
2. DBHelper 里面不用Try catch,用Throw exception,在外面......
我现在用的一般都是第一种方法!!!
[/Quote]
如果你用第一种方法的话,那就再你的finally里面写关闭连接的操作.
try
{}
catch{}
finally
{
if(null != sqlConnection)
sqlConnection.Close()
}
yalan
2010-12-14
打赏
举报
回复
很简单,建议用using()代码块来访问数据,以保证数据绝对被释放;
比如:
try
{
using(SqlConnection conn=new SqlConnection(connstring))
{
conn.Open();
//做你要做的操作
}
}
catch
{
//即使数据连接有错误,也没关系,using已经释放他了呵呵
}
winner213
2010-12-14
打赏
举报
回复
两种方法,随LZ喜欢:
1. DBHelper 里面用try catch,那么DBHelper里面的每一个Public 函数都要有一个Return值,用户在调用时可以根据这个Return值走你的代码逻辑.
2. DBHelper 里面不用Try catch,用Throw exception,在外面扑捉
wuyq11
2010-12-14
打赏
举报
回复
异常可以分为系统异常和业务异常,业务异常必须被转化为业务执行的结果
DataAccess层不得向上层隐藏任何异常
要明确区分业务执行的结果和系统异常。比如验证用户的合法性,如果对应的用户ID不存在,不应该抛出异常,
而是返回(或通过out参数)一个表示验证结果的枚举值,这属于业务执行的结果。但是,如果在从数据库中提取用户信息时,数据库连接突然断开,则应该抛出系统异常
BL层应根据业务的需要捕获某些系统异常,并将其转化为业务执行的结果
UI层除了从调用BL层的API获取的返回值来查看业务的执行结果外,还需要截获所有的系统异常,并将其解释为友好的错误信息呈现给用户
一般使用log4net实现日志记录和自定义异常处理
全栈深入
2010-12-14
打赏
举报
回复
如果try{}catch{}在DBHelper类里面,你可以往这个方法加加一个返回来的布尔值,如果DBHelper里面抛异常了,则返回false,成功了就true,(或者加一个out bool flag的参数放在方法参数里面)
外层调用的地方根据返回的true或者false来进行判断和处理,如果是false了就不执行下面的程序跳出返回了,如果是true的话就继续执行了
戒指
2010-12-14
打赏
举报
回复
楼主意思是想捕捉这个异常,然后返回给上级吧?只要捕捉到异常,程序就停止?是吧?
whrspsoft3723
2010-12-14
打赏
举报
回复
把dbhelper重新改造下,里边执行单元加上 try catch finally之类的。
加上一些参数,返回错误 。
调用 时捕获,还是同样的东西,没有必要浪费那么多代码。
python之
捕捉
异常
重点介绍如何
捕捉
异常
,try……except语句的基本用法、以及如何
捕捉
多个
异常
等
python
异常
的
捕捉
与包
简单的说
异常
就是bug,包就是多个模块(.py的文件)和一个__inti__.py。此篇文章为大家做出总结。
捕捉
异常
_Unity协程的
异常
捕捉
这两天维护项目中一个用到协程的模块,才发现协程中的
异常
捕捉
有点麻烦.若想在协程报错导致协程中断后做一些后续处理,普通的try catch包含整个协程结构是不可用的,故要用特殊办法处理开始搞事~思路就是在每一个yield之间进行try catch即可,也包括子迭代器主要就是这个类,可
捕捉
异常
的迭代器using System.Collections; using System.Collections....
Flutter
异常
捕捉
原理和
异常
上报
Flutter线程模型/事件机制 在介绍Flutter
异常
捕捉
原理之前,先说明一下Dart的模型。方便我们了解Dart代码的执行流程和获取一个合适的
异常
捕捉
切入点。 我们知道在Java中,如果程序运行发生
异常
并且没有做捕获处理,程序会直接终止运行发生Crash。但这种情况在Dart中会有所不同。Dart不同于Java的多线程模型,Dart和JavaScript类似属于单线程模型。Dart的单线程模型是以消息循环机制来运行的,其中包含两个任务队列,一个是“微任务队列”microtask queue,另外一个
python中使用什么来实现
异常
捕捉
_python
异常
捕捉
python中
捕捉
异常
常用句式try...except.try 语句按照如下方式工作;首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。如果没有
异常
发生,忽略 except 子句,try 子句执行后结束。如果在执行 try 子句的过程中发生了
异常
,那么 try 子句余下的部分将被忽略。如果
异常
的类型和 except 之后的名称相符,那么对应的 except 子句将被...
C#
111,128
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章