首页 > 技术文章 > c#的if判断与异常处理

longxinyv 2021-02-10 18:51 原文

//判断闰年:闰年也就是二月份有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();

switch...case的结构体

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharp 
{
    class Demo2
    {
        static void Main(string[] args)
        {
            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();

        }

    }
}

 

推荐阅读