C#使用异常中断方式,简化频繁判断返回值的流水式返回判断

引言

大家可能遇到这种情况,每一步函数调用都要判断返回结果是否正常顺序执行下一步。如下举例

csharp 复制代码
public static bool step1()  
{  
    return true;  
}  
  
public static bool step2()  
{  
    return true;  
}  
  
public static bool step3()  
{  
    return false;  
}  
  
public static bool step4()  
{  
    return true;  
}  
  
public static void Main()  
{  
    if (!step1())  
    {  
        Console.WriteLine("step1 fail!");  
        return;  
    }  
      
    if (!step2())  
    {  
        Console.WriteLine("step2 fail!");  
        return;  
    }  
      
    if (!step3())  
    {  
        Console.WriteLine("step3 fail!");  
        return;  
    }  
      
    if (!step4())  
    {  
        Console.WriteLine("step4 fail!");  
        return;  
    }  
      
    Console.WriteLine("All step ok!");  
}

这样调用频繁判断不够简洁美观并麻烦。

可以使用抛异常方式中断当前main函数,自定义记录异常信息。

csharp 复制代码
 public static bool step3()
    {
        throw new MyException("step3步骤执行失败");
        return false;
    }

    public static bool step4()
    {
        return true;
    }
    class MyException : Exception
    {
        public MyException(string message) : base(message)
        {
        }
    }
    public static void Main()
    {
        try
        {
            step1();
            step2();
            step3();
            step4();
            Console.WriteLine("All steps ok!");
        }
        catch (MyException ee)
        {
            Console.WriteLine(ee?.ToString()?? "step failed!");
        }
    }
相关推荐
weifexie12 分钟前
ruby超高级语法
开发语言·后端·ruby
麻芝汤圆18 分钟前
利用Hadoop MapReduce实现流量统计分析
大数据·开发语言·hadoop·分布式·servlet·mapreduce
局外人_Jia22 分钟前
【 C# 使用 MiniExcel 库的典型场景】
开发语言·windows·c#·miniexcel
烁34744 分钟前
每日一题(小白)暴力娱乐篇20
java·开发语言·算法·排序算法·娱乐
亿坊电商1 小时前
不同PHP框架之间的兼容性问题及应对策略!
开发语言·php·php框架
呦呦鹿鸣Rzh1 小时前
SpringMvc的请求-获得请求参数
java·开发语言
头孢头孢1 小时前
go语言的语法糖以及和Java的区别
java·开发语言·golang
快乐的木子李2 小时前
Java核心技术面试题
java·开发语言
C语言小火车3 小时前
QT面试题:内存管理与对象生命周期
开发语言·qt·面试
雾月556 小时前
LeetCode 941 有效的山脉数组
java·开发语言·数据结构·算法·leetcode·职场和发展