当前位置:编程学习 > C#/ASP.NET >>

三层架构中,如何优雅地处理存储过程中的返回值,及异常?

数据访问层(略)

逻辑层:(异常捕捉放到那层好呢?逻辑层还是数据层呢)
public static bool DeleteAdmin(int AdminID)
    {
        int result = -1;
            ...略

            try
            {
                result = GenericDataAccess.ExecuteNonQuery(command); 
            }
        catch (SqlException ex)
        {
            foreach (SqlError serr in ex.Errors)
            {
                if (serr.Number == 5000)
                {
                    HttpContext.Current.Response.Write(serr.Message);
                   //这里是我自定义的错误,会显示 "默认至少有一个管理员!"
                }
            }
        }   
       catch (Exception ex)
            {
                .....
            }

        return (result != -1);
    }
1如何才能优雅地处理?(写入日志文件,发邮件的方式是告诉系统管理员的。可我想用异常告诉用户出错的原因,如"默认至少有一个管理员!"这样的提示,表示层如何捕捉到自定义异常的提示呢?我这里用Response.Write,表示层想用label之类的控件接收.

2另外,我在存储过程中用return 1,2,3之类的标识处理的结果,如果现在这个逻辑层的返回值为bool,表示层如何才能接收这些状态值,以清楚的告诉用户呢?(虽然逻辑层的返回值改为int即可,但感觉在表示层接收返回值,再判断状态告诉用户比较不雅,有什么好的方法吗?) --------------------编程问答-------------------- 偶在 UI 层处理 --------------------编程问答-------------------- 虽然逻辑层的返回值改为int即可,但感觉在表示层接收返回值,再判断状态告诉用户比较不雅,有什么好的方法吗

=======

应用程序之间,返回值是比较原始的方式了,考虑选择 throw exception

即使 存储过程中,我也比较喜欢使用 RAISERROR 而不此采用 return code 的方式

这样,在 DAL 中,我就可以统一的 t
ry { /// .. } catch(SqlException exp) { // 处理 // throw new MyDALException("some db failed.", exp);} --------------------编程问答-------------------- 你已经把数据层处理结果都返回来了如(-1,1,2,3,4。。。。。)要是我做的话,就自己定义个错误信息返回就可以了。根本就不用try,catch这些判断了。多此一举了。
--------------------编程问答-------------------- To:Jinglecat(晓风残月 >> 问题需简洁,错误要详细) 

请说一个详细的例子,我也想知道这方面的东西.....太重要了.. --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 捕获的时候直接写日志 --------------------编程问答-------------------- 帮忙顶 --------------------编程问答-------------------- 1. 在写 数据层的时候 try{}catch{}failly{} return 1,2,3 说明下1,2,3的情况然后在UI层调用是 直接return1,2,3~!

2.你在UI里专门定义一个报错页面,把所有的报错情况全部定义在这个页面里
--------------------编程问答-------------------- 我再up一下这贴子 --------------------编程问答-------------------- 数据层写的时候在其他地方要考虑到那些需要用 --------------------编程问答-------------------- 定义好返回值所对应的信息
在web层获取返回值,把对应的信息提示给用户 --------------------编程问答-------------------- 我是放在逻辑层里面的,呵呵~ --------------------编程问答-------------------- up~~up --------------------编程问答-------------------- up,另处,如果用到时批量的增,删,改时,(启用事务)如何封闭数据访问层?还是只能在表示层写循环的代码? --------------------编程问答-------------------- 优雅与否不决定作者本身,要看用户使用情况, --------------------编程问答-------------------- 同意楼上的 --------------------编程问答-------------------- IBatisNet可以,然后用ref 方式返回参数,返回到UI 层
可以参考NickLee.Fortune构架
http://www.cnblogs.com/mail-ricklee/archive/2007/07/26/832670.html --------------------编程问答-------------------- up 好贴,不懂,UP
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,