zoukankan      html  css  js  c++  java
  • c# 异常 的 异想

    这几天我在琢磨异常的事情。
    1、如何正确捕获异常?
    2、如何使用异常?
     
    缘由:
    我有时看framework的源码,郁闷之极,几乎所有函数内都有异常。
    而我之前开发项目时,异常是或者说黄页是高等级BUG。
    后来在开发的时候经常写这种格式的函数 bool A (输入参数,out 输出参数,out String 错误信息)或者bool A (输入参数,out String 错误信息)
    用了一段时间以后 极度郁闷,每个函数内都会有异常除了判断外你的还得告诉用户哪里错了。但是写这种格式函数既不美观(我通常形容写代码如果写作文)又不实用,每次还得对输出参数初始化,增加了代码量不说还烦。
     
    所以我想到一个问题,凭啥微软能用异常,我不能用? 异常是最好的错误提示。
     
    环境分析:
    1、公共模块 环境
    这种环境下我们不知道写出来的程序集哪个项目会用到,所以我觉得使用FCL内的异常类型比较好。
     
    2、具体项目 环境
     这种环境下,涉及到业务性的场合,你得告诉用户他的错误才行,比如用户名格式不对等等。(也许有人会说脚本验证就行了,何必后台验证和显示有好错误信息,我的回答是,作为服务端永远不要相信客户端(IE,C/S)传来的数据必须验证。)
     
    我们可以先定义一个自定义异常,在异常内可以写错误日志。
    1、在表现层中 截获自定义异常,不截获Exception(没有合理的理由绝不捕获该异常),
    2、对于业务函数则统一抛出自定义函数如:new CustomException(“具体错误内容”); 或者new CustomException(Enum.Error);(枚举或者其他类型代替字符串有利于多语言支持)
            这种方式下的代码就有点意思了
            void A(String pMessage)
            {
                if(null==pMessage)
                {
                    //throw new CustomException("error:pMessage is null");
                    throw new CustomException("您没有输入信息,请重新输入");
                }
            counsel.WriteLine(pMessage);
            }




    我的开源的地址https://github.com/tianjing/ 大家踊跃拍砖共同成长,拍砖的同时记得附上意见或者建议。!!谢谢 谢谢
  • 相关阅读:
    ABP框架插件开发
    ionic 向路由中的templateUrl(模板页)传值
    EFT4 生成实体类
    mvc 下的 signalR使用小结
    利用javascript实现页面截图
    linux定时任务php
    PHPCMSV9的CKEDITOR编辑器增加行距
    上传网站后建议执行:chown www:www -R /path/to/dir 对网站目录进行权限设置,/path/to/dir替换为你网站目录。
    centOS7下安装GUI图形界面
    虚拟机中的Linux安装VMware Tools的方法
  • 原文地址:https://www.cnblogs.com/tianjing/p/2574832.html
Copyright © 2011-2022 走看看