zoukankan      html  css  js  c++  java
  • 返回flag

    //修改前
    namespace
    CleanCSharp.Errors.Dirty { public class SomeClass { public int DoSomeProcess(int? id) { if (id == null) { return -1; // null id } string data = LoadData(); if (string.IsNullOrWhiteSpace(data)) { return -2; // data is corrupt } ProcessData(data); return 0; // no error, all good } private string LoadData() { return "some data"; } private void ProcessData(string data) { // do something } } }
    修改前,调用
    namespace CleanCSharp.Errors.Dirty
    {
        public class ConsumerOfSomeClass
        {
            public void Consume()
            {
                var sc = new SomeClass();
                const int idToProcess = 42;
                int returnCode = sc.DoSomeProcess(idToProcess);
                switch (returnCode)
                {
                    case -1: // null id
                             // do something
                     
                break;
                    case -2: // corrupt data
                             // do something
                        break;
                    case 0: // no error
                        Save(idToProcess);
                        break;
                }
            }
            private void Save(int id)
            {
                // save
            }
        }
    }
    //修改后
    using System;
    using System.IO;
    namespace CleanCSharp.Errors.Clean
    {
        public class SomeClass
        {
            public void DoSomeProcess(int? id)
            {
                if (id == null)
                {
                    throw new ArgumentNullException("id");
                }
                string data = LoadData();
                ProcessData(data);
            }
            private string LoadData()
            {
                var demoData = "";
                if (string.IsNullOrWhiteSpace(demoData))
                {
                    throw new
                    InvalidDataException(
                    "The data stream contains no data.");
                }
                return demoData;
            }
            private void ProcessData(string data)
            {
                // do something
            }
        }
    }


    //修改后
    using System;
    using System.Diagnostics;
    using System.IO;
    namespace CleanCSharp.Errors.Clean
    {
        public class ConsumerOfSomeClass
        {
            public void Consume()
            {
                var sc = new SomeClass();
                const int idToProcess = 42;
                try
                {
                    sc.DoSomeProcess(idToProcess);
                }
                catch (ArgumentNullException ex)
                {
                    // null id
    
                    // do something such as logging
                    // if cannot respond to this
                    // exception propagate up the
                    // call stack
                    throw;
                    // Notice the throw is not: throw ex;
                }
                catch (InvalidDataException ex)
                {
                    // bad data
                    // do something
                    throw;
                }
                catch (Exception ex)
                {
                    // any other exceptions that may occur
                    // do something
                    throw;
                }
                Save(idToProcess);
            }
            private void Save(int id)
            {
                // save
            }
        }
    
    }
  • 相关阅读:
    2014年寒假学习规划
    二十进制数的加法--【英雄会】
    使用IBM SVC构建vSphere存储间集群
    游戏服务器学习笔记 2———— 准备工作
    php判断正常访问和外部访问
    游戏服务器学习笔记 3———— firefly 的代码结构,逻辑
    数学基础知识 ——(1)高等数学
    动态内存与智能指针
    Numpy(4)—— 保存和导入文件
    Numpy(3)—— 线性代数相关函数
  • 原文地址:https://www.cnblogs.com/gaocong/p/6688671.html
Copyright © 2011-2022 走看看