//修改前
namespace CleanCSharp.Errors.Dirty
{
public class SomeClass
{
public int DoSomeProcess(int? id)
{
if (id == null)
{
return -; // null id
}
string data = LoadData();
if (string.IsNullOrWhiteSpace(data))
{
return -; // data is corrupt
}
ProcessData(data); return ; // 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 = ;
int returnCode = sc.DoSomeProcess(idToProcess);
switch (returnCode)
{
case -: // null id
// do something break;
case -: // corrupt data
// do something
break;
case : // 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 = ;
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
}
} }

返回flag的更多相关文章

  1. a标签根据js返回值判断页面是否跳转

    a标签再跳转之前先判断是否符合条件,符合可以跳转,不符合不可以跳转. 自己遇到的问题是:在js方法中根据条件就return结果,但是不行. 原因是:在js方法中return后不会结束整个js方法(ac ...

  2. 1-File类的使用

    package com.io; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...

  3. C++find函数

    头文件 #include <algorithm> 函数实现 template<class InputIterator, class T> InputIterator find ...

  4. ASP代码审计一枚

    <% On Error Resume Next dim name, pass, sql, action set conn = server.CreateObject("ADODB.Co ...

  5. POJ1753Flip Game(DFS + 枚举)

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37050   Accepted: 16122 Descr ...

  6. SSCTF-Final-Re-Play

    SSCTF-Final-Re-Play  比赛时花了一晚上搞定了,结果写脚本的时候发送的内容忘记base64加密然后异或8了,手动测试的时候当然是这样做了,写脚本的时候脑抽了.这个题只有forx做出来 ...

  7. [rctf](web)rcdn 解题分析,知识点总结

    比赛平台关闭了,没有截图,见谅.   解题思路流程: 分析网站结构,看源码,元素审计.发现以下信息. 要得到flag要获得一个pro cdn pro 子域名长度为3到6个字符 存在一个提交ticke页 ...

  8. Django contrib Comments 评论模块详解

    老版本的Django中自带一个评论框架.但是从1.6版本后,该框架独立出去了,也就是本文的评论插件. 这个插件可给models附加评论,因此常被用于为博客文章.图片.书籍章节或其它任何东西添加评论. ...

  9. CTF---Web入门第六题 因缺思汀的绕过

    因缺思汀的绕过分值:20 来源: pcat 难度:中 参与人数:6479人 Get Flag:2002人 答题人数:2197人 解题通过率:91% 访问解题链接去访问题目,可以进行答题.根据web题一 ...

随机推荐

  1. Mysql Field * doesn't have a default value解决方法

    Mysql Field * doesn't have a default value解决方法 MySQL 5中,出现错误提示: Field 'id' doesn't have a default va ...

  2. Android应用更新自动检测下载

    由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必 ...

  3. Python enumerate索引迭代

    索引迭代Python中,迭代永远是取出元素本身,而非元素的索引.对于有序集合,元素确实是有索引的.有的时候,我们确实想在 for 循环中拿到索引,怎么办?方法是使用 enumerate() 函数:&g ...

  4. Python 创建特殊元组tuple

    创建1个元素的tuple  (1,) 创建单元素tupletuple和list一样,可以包含 0 个.1个和任意多个元素.包含多个元素的 tuple,前面我们已经创建过了.包含 0 个元素的 tupl ...

  5. 【BIRT】修改BIRT的背景颜色

    修改BIRT报表的背景颜色都在这里了 在BIRT的webcontent/birt/styles/目录下有如下文件列表: dialogbase.css文件修改 dialogbase_rtl.css文件修 ...

  6. 文件流(fstream, ifstream, ofstream)的打开关闭、流状态

    一.文件流 ofstream,由ostream派生而来,用于写文件 ifstream,由istream派生而来, 用于读文件 fstream,由iostream派生而来,用于读写文件 二.打开文件 说 ...

  7. json-lib 的maven dependency 异常解决方案

    项目中要用到json-lib,mvnrepository.com查找它的dependency时结果如下: xml 代码   <dependency> <groupId>net. ...

  8. Maven的个性化定制

    用Maven的小伙伴都知道,Maven的宗旨是约定优于配置(Convention Over Configuration). 在宗旨的前提下Maven也提供了个性化定制的Profile,让我们看看使用方 ...

  9. Atitit. 软件---多媒体区---- jmf 2.1.1 Java Media Framework 支持的格式

    Atitit. 软件---多媒体区---- jmf 2.1.1 Java Media Framework 支持的格式 JMF,全名为Java Media Framework,它可以在java appl ...

  10. Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器client(1)-墨卡托投影与坐标控制

    (相关的代码能够从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们如今是准备做一个C/S架构的地图显示控件.就必定牵扯到坐标 ...