c#的if判断与异常处理

判断语句:if---else if ---else【如果--否则---其他,另外的】 , 异常处理语句:try---catch---finally【尝试---拦截----最终】

//判断闰年:闰年也就是二月份有29天,普通闰年:bai能被4整除但du不能被100整除,世纪闰年:能被400整除的为世纪闰年。
Console.WriteLine("请输入闰年:");
int year = Convert.ToInt32(Console.ReadLine());
//三目运算符:数据类型 变量 = 表达式1?表达式2:表达式3 (意思是如果表达式1成立,那么表达式2赋值给变量,不成立就把表达式3赋值给变量)这里只是学习三目运算符才这样写,三目运算符是if...else的简化写法
bool tr = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0) ? true : false;//%取余数,bool类型返回值是true和false常用于if判断里面
if (year <= 0)
{
    Console.WriteLine("你输入的:" + year + "不大于0");// 只是利用if的分支语句进行判断
}
else if (tr == true)
{
    Console.WriteLine("你输入的年份:" + year + "是闰年");
}
else
{
    Console.WriteLine("你输入的:" + year + "不是闰年");
}

try//主体代码块有可能发生的异常,【尝试】
{
    try
    {
        //语句抛出异常
        throw new Exception("错误信息");//强制抛出异常用:throw new Exception("错误信息"); 可以用于try中自己需要抛出的异常。之后就会执行catch里面的代码。
    }
    catch
    {
        throw;//向外抛出异常只能用于catch,如果没有则外面无法获取当前异常。
    }
}
catch (Exception ex)//处理异常,获取try发生异常后会跳转到这里,如果未抛出异常则不执行,Exception是获取所有的异常
{
    Console.WriteLine(ex.StackTrace);//获取异常的错误路径位置ex.StackTrace和ex.ToString()是一样的
    Console.WriteLine("获取异常信息:" + ex.Message);//获取异常信息
}
finally
{
    Console.WriteLine("不管有没有发生异常都会执行,等待try执行完成后才会执行,如果有catch必须写在其后");
}


Console.ReadLine();//用输入来暂停

三目运算符:【条件?满足:不满足】

int i = 0;
var a = i == 1 ? "满足条件" : "不满足条件"; //判断i是否等于1
Console.WriteLine(a);//类似于if判断:if(i==1)

switch...case结构体【转换---实例】

Console.WriteLine("请输入年份:");
try
{
    int year = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("请输入月份:");
    try
    {
        int monty = Convert.ToInt32(Console.ReadLine());
        if (monty >= 1 && monty <= 12)
        {
            int day = 0;//先声明一个变量存储天数
            switch (monty)//多条件定值判断:类似于else if(变量==值)的switch...case的结构体
            {
                //case 中的值必须是常量,不能是变量、表达式
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day = 31;
                    break;//专用于跳出switch语句
                case 2:
                    if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
                    {
                        day = 29;
                    }
                    else
                    {
                        day = 28;
                    }
                    break;
                default://相当于if语句的else,各case和default子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用
                    day = 30;
                    break;

            }
            Console.WriteLine("你输入的:{0}年{1}月共有{2}天。", year, monty, day);
        }
        else
        {
            Console.WriteLine("你的输入月份不符合要求,程序退出。");
        }
    }
    catch
    {
        Console.WriteLine("你的输入月份有误,程序退出。");
    }
}
catch
{
    Console.WriteLine("你的输入年份有误,程序退出。");
}
Console.ReadLine();

 

posted @ 2021-02-10 18:51  Akai_啊凯  阅读(820)  评论(0编辑  收藏  举报