http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 10800|回复: 4

[C#入门] 异常(Exception)

[复制链接]
发表于 2015-7-27 06:06:39 | 显示全部楼层 |阅读模式
本帖最后由 wwwconsumer 于 2015-7-27 06:14 编辑

异常(Exception)是程序执行中发生的问题。有时是程序猿设计程序有瑕疵,有时则是用户操作的问题。所以,我们必须对这种过程予以监控并及时提出反馈,以便保证程序的正常进行。在C #中提供了一套完美的方案,让我们在程序主线之外处理异常。下面,我们以一个常见的分母为0的除法计算为例看看C#对这类异常是如何处理的。
[C#] 纯文本查看 复制代码
 static void Main(string[] args)
        {
           
                Console.Write("请输入分母:");
                int denoninator = Convert.ToInt32(Console.ReadLine());
                double result = 100 /denoninator;
                Console.WriteLine("结果:100/{0}={1}", denoninator, result);
        }

运行结果如下:

异常

异常

其实除以0只是其中一种情况,还有另一种情况是输入的字符错误。例如,输入字母a时也会导致异常:

A异常

A异常


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2015-7-27 06:34:08 | 显示全部楼层
C#自带的上述的异常提示,对于有经验的程序猿来说不是问题,处理起来也很容易,但对于新手来说,我们希望程序能自动给出一个明确的出错提示,以便我们及时处理。这时,我们就要对上述异常的情形设计一个针对自己程序特有环境的明确提示,以便增加程序的友好性。这时,我们可以应用try-catch结构捕获并处理异常。
[C#] 纯文本查看 复制代码
   static void Main(string[] args)
        {
            try
            {
                Console.Write("请输入分母:");
                //下面的语句可能产生FormatException异常
                int denoninator = Convert.ToInt32(Console.ReadLine());

                //下面的语句可能产生DivideByZeroException异常
                double result = 100 / denoninator;

                Console.WriteLine("结果:100/{0}={1}", denoninator, result);

            }
            catch (DivideByZeroException)
            {
                Console.WriteLine("分母不能为零!");
            }
            catch (FormatException)
            {
                Console.WriteLine("格式错误!");
            }
        }
   

当输入0时,结果如下图:

分母为零

分母为零

当输入字符为a时:

格式错误

格式错误

这种提示,你是否感觉更加清楚和易于判断呢?
发表于 2015-7-27 09:54:46 | 显示全部楼层
真是难得给力的帖子啊。
 楼主| 发表于 2015-9-17 04:56:02 | 显示全部楼层
继续发个异常的帖子,主要是在文件的打开和读写操作中:
[C#] 纯文本查看 复制代码
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DirectoryTest
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string path = @"D:/my documents";
                if (Directory.Exists(path))
                {
                    //获取子目录
                    string[] dirs = Directory.GetDirectories(path);
                    Console.WriteLine("子目录:");
                    foreach (string dir in dirs)
                    {
                        Console.WriteLine(dir);
                    }
                    //获取文件
                    string[] files = Directory.GetFiles(path);
                    Console.WriteLine("文件:");
                    foreach (string file in files)
                    {
                        Console.WriteLine(file);
                    }
                }
                else
                {
                    Console.WriteLine("目录不存在");
                }
            }
            catch(Exception e)
            { 
            //异常处理
                Console.WriteLine(e.Message);
            }
        }
    }
}

由于我设置打开文件的目录为:D:\my documents
显示该目录为不存在。

图片1

图片1
发表于 2015-12-26 15:53:04 | 显示全部楼层
受教了学习中……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-3-29 18:14

© 2014-2021

快速回复 返回顶部 返回列表