(2).验证异常:
/// <summary>
/// 检查字符串是空的或空的,并抛出一个异常
/// </summary>
/// <param name="val">值测试</param>
/// <param name="paramName">参数检查名称</param>
public static void CheckNullOrEmpty(string val, string paramName)
{
if (string.IsNullOrEmpty(val))
throw new ArgumentNullException(paramName, "Value can't be null or empty");
}
/// <summary>
/// 请检查参数不是空的或空的,并抛出异常
/// </summary>
/// <param name="param">检查值</param>
/// <param name="paramName">参数名称</param>
public static void CheckNullParam(string param, string paramName)
{
if (string.IsNullOrEmpty(param))
throw new ArgumentNullException(paramName, paramName + " can't be neither null nor empty");
}
/// <summary>
/// 检查参数不是无效,并抛出一个异常
/// </summary>
/// <param name="param">检查值</param>
/// <param name="paramName">参数名称</param>
public static void CheckNullParam(object param, string paramName)
{
if (param == null)
throw new ArgumentNullException(paramName, paramName + " can't be null");
}
/// <summary>
/// 请检查参数1不同于参数2
/// </summary>
/// <param name="param1">值1测试</param>
/// <param name="param1Name">name of value 1</param>
/// <param name="param2">value 2 to test</param>
/// <param name="param2Name">name of vlaue 2</param>
public static void CheckDifferentsParams(object param1, string param1Name, object param2, string param2Name)
{
if (param1 == param2) {
throw new ArgumentException(param1Name + " can't be the same as " + param2Name,
param1Name + " and " + param2Name);
}
}
/// <summary>
/// 检查一个整数值是正的(0或更大)
/// </summary>
/// <param name="val">整数测试</param>
public static void PositiveValue(int val)
{
if (val < 0)
throw new ArgumentException("The value must be greater than or equal to 0.");
}
(3).Try-Catch扩展操作:
/// <summary>
/// 对某对象执行指定功能与后续功能,并处理异常情况
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="source">值</param>
/// <param name="action">要对值执行的主功能代码</param>
/// <param name="failureAction">catch中的功能代码</param>
/// <param name="successAction">主功能代码成功后执行的功能代码</param>
/// <returns>主功能代码是否顺利执行</returns>
public static bool TryCatch<T>(this T source, Action<T> action, Action<Exception> failureAction,
Action<T> successAction) where T : class
{
bool result;
try
{
action(source);
successAction(source);
result = true;
}
catch (Exception obj)
{
failureAction(obj);
result = false;
}
return result;
}
/// <summary>
/// 对某对象执行指定功能,并处理异常情况
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="source">值</param>
/// <param name="action">要对值执行的主功能代码</param>
/// <param name="failureAction">catch中的功能代码</param>
/// <returns>主功能代码是否顺利执行</returns>
public static bool TryCatch<T>(this T source, Action<T> action, Action<Exception> failureAction) where T : class
{
return source.TryCatch(action,
failureAction,
obj => { });
}
/// <summary>
/// 对某对象执行指定功能,并处理异常情况与返回值
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <typeparam name="TResult">返回值类型</typeparam>
/// <param name="source">值</param>
/// <param name="func">要对值执行的主功能代码</param>
/// <param name="failureAction">catch中的功能代码</param>
/// <param name="successAction">主功能代码成功后执行的功能代码</param>
/// <returns>功能代码的返回值,如果出现异常,则返回对象类型的默认值</returns>
public static TResult TryCatch<T, TResult>(this T source, Func<T, TResult> func, Action<Exception> failureAction,
Action<T> successAction)
where T : class
{
TResult result;
try
{
var u = func(source);
successAction(source);
result = u;
}
catch (Exception obj)
{
failureAction(obj);
result = default(TResult);
}
return result;
}
/// <summary>
/// 对某对象执行指定功能,并处理异常情况与返回值
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <typeparam name="TResult">返回值类型</typeparam>
/// <param name="source">值</param>
/// <param name="func">要对值执行的主功能代码</param>
/// <param name="failureAction">catch中的功能代码</param>
/// <returns>功能代码的返回值,如果出现异常,则返回对象类型的默认值</returns>
public static TResult TryCatch<T, TResult>(this T source, Func<T, TResult> func, Action<Exception> failureAction)
where T : class
{
return source.TryCatch(func,
failureAction,
obj => { });
}








