返回flag
//修改前
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的更多相关文章
- a标签根据js返回值判断页面是否跳转
a标签再跳转之前先判断是否符合条件,符合可以跳转,不符合不可以跳转. 自己遇到的问题是:在js方法中根据条件就return结果,但是不行. 原因是:在js方法中return后不会结束整个js方法(ac ...
- 1-File类的使用
package com.io; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...
- C++find函数
头文件 #include <algorithm> 函数实现 template<class InputIterator, class T> InputIterator find ...
- ASP代码审计一枚
<% On Error Resume Next dim name, pass, sql, action set conn = server.CreateObject("ADODB.Co ...
- POJ1753Flip Game(DFS + 枚举)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37050 Accepted: 16122 Descr ...
- SSCTF-Final-Re-Play
SSCTF-Final-Re-Play 比赛时花了一晚上搞定了,结果写脚本的时候发送的内容忘记base64加密然后异或8了,手动测试的时候当然是这样做了,写脚本的时候脑抽了.这个题只有forx做出来 ...
- [rctf](web)rcdn 解题分析,知识点总结
比赛平台关闭了,没有截图,见谅. 解题思路流程: 分析网站结构,看源码,元素审计.发现以下信息. 要得到flag要获得一个pro cdn pro 子域名长度为3到6个字符 存在一个提交ticke页 ...
- Django contrib Comments 评论模块详解
老版本的Django中自带一个评论框架.但是从1.6版本后,该框架独立出去了,也就是本文的评论插件. 这个插件可给models附加评论,因此常被用于为博客文章.图片.书籍章节或其它任何东西添加评论. ...
- CTF---Web入门第六题 因缺思汀的绕过
因缺思汀的绕过分值:20 来源: pcat 难度:中 参与人数:6479人 Get Flag:2002人 答题人数:2197人 解题通过率:91% 访问解题链接去访问题目,可以进行答题.根据web题一 ...
随机推荐
- webpack 引入jquery和第三方jquery插件
1.引入jquery jQuery 直接在 html 中引入,然后在 webpack 中把它配置为全局即可. index.html: <!DOCTYPE html> <html> ...
- Ubuntu14.04上深度学习Caffe库安装指南(CUDA7.5 + opencv3.1)
Ubuntu14.04上Caffe安装指南 安装的准备工作 首先,安装官方版Caffe时.假设要使用Cuda.须要确认自己确实有NVIDIA GPU. 安装Ubuntu时,将/boot 分区分大概20 ...
- iOS动画进阶 - 实现炫酷的上拉刷新动效
移动端訪问不佳,请訪问我的个人博客 近期撸了一个上拉刷新的小轮子.仅仅要遵循一个协议就能自己定义自己动效的上拉刷新和载入,我自己也写了几个动效进去,以下是一个比較好的动效的实现过程 先上效果图和git ...
- 项目启动时 Exception in thread "HouseKeeper" java.lang.NullPointerException
首先查看是否是端口冲突引起,在日志信息该错误位置往上找,如果再无错误信息,而只有该错误,则原因可能如下: 原因: This is because Proxool is not being shutdo ...
- centos 配置 samba 与windows共享文件夹
yum install samba /etc/samba/smb.conf directory mask = 0777 ← 指定新建目录的属性(以下4行) force directory mode = ...
- Spring boot配置fastjson
pom 文件引用 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson< ...
- C++的引用与const指针的关系以及各种传递方式
首先我们知道 const int *p 与 int const *p 是一样的,即 *p 是常量:而 int * const p 跟上面是不一样的,即 p 是常量:我们知道引用只是一个别名,与变量共享 ...
- 在Cocos2d-X中使用xml
XML就可以扩展标记语言.在游戏开发中,经常使用于保存游戏信息,如最高分,游戏等级.等信息,和描写叙述一些资源等,我第一次使用xml是在使用CCAnimation创建动画中,使用plist文件载入动画 ...
- redis.windows.conf各项配置参数介绍 (九)
# 默认情况下,redis不是在后台模式运行的,如果需要在后台进程运行,把该项的值更改为yes,默认为no daemonize:是否以后台daemon方式运行 # 如redis服务以后台进程运行的时候 ...
- Ubuntu快捷键截图
gnome-screenshot #全屏截图 gnome-screenshot -a #区域截图 在设置-键盘-快捷键-自定义快捷键中添加这个指令,创建快捷键. 注:我本人是在VBox里装的Ubunt ...