c#基础之异常处理及自定义异常

一、什么是c#中的异常?

异常是程序运行中发生的错误,异常处理是程序的一部分。c#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说System.Exception类是所有预定义的系统异常的基类。错误的出现并不总是编写应用的程序员的原因,有的时候应用程序也会因为终端用户的操作不当而发生错误。无论如何,在编写程序前都应该预测应用程序和代码中出现的错误。


二、常见的异常都有哪些?

        ①    ArrayTypeMismatchException

向数组中存数据时,存入的数据与数组定义的数据类型不同的时候便会出现该异常

②    DivideByZeroException

        用零除整数时引发该异常

③    IndexOutOfRangeException

        数组越界异常

④    NullReferenceException

        对象引用为空异常

⑤    OverflowException

        算数运算溢出

⑥    InvalidCastException

        运行时强制转换无效异常


三、异常处理

        使用如下代码结构来捕获和处理异常

try{
    //try块中包含容易产生异常的代码
}
catch{
    //异常处理代码
}
finally{
    //用于消除try块中分配的任何资源
    //以及即使发生异常也需要继续运行的代码
}

其中finally代码块是try-catch结构执行完成后,无论是否发生异常,finally代码块都会执行。即便是写代码时在try-catch结构里return了,仍旧是会执行了finally代码块之后再去return。

接下来看一个简单的异常捕获及处理的例子:

 1 public class MyException
 2     {
 3         public static void Main()
 4         {
 5             try
 6             {
 7                 A();
 8                 B();
 9                 C(null);
10             }
11             //捕获A,B,C方法抛出的异常
12             catch (Exception ex)
13             {
14                 //打印出异常信息
15                 Console.WriteLine(ex);
16                 Console.ReadKey();
17             }
18         }
19
20         static void A()
21         {
22             // throw语法.
23             try
24             {
25                 //引发零除异常
26                 int value = 1 / int.Parse("0");
27             }
28             catch
29             {
30                 //捕获到异常不做处理继续抛出异常
31                 throw;
32             }
33         }
34
35         static void B()
36         {
37             // 过滤异常类型.
38             try
39             {
40                 int[] array = new int[]{ 1, 2, 3 };
41                 //引发数组越界异常
42                 array[6] = 4;
43             }
44             //捕获到数组越界异常
45             catch (IndexOutOfRangeException ex)
46             {
47                 //抛出数组越界异常
48                 throw ex;
49             }
50         }
51
52         static void C(string value)
53         {
54             // 创建新的异常.
55             if (value == null)
56             {
57                 //抛出新的异常
58                 throw new ArgumentNullException("value");
59             }
60         }
61     }

值得一提的是推荐使用throw来抛出异常。因为throw ex会将到现在为止的所有信息清空,认为你catch到的异常已经被处理了,只不过处理过程中又抛出新的异常,从而找不到真正发生异常的代码位置。

四、自定义异常

        自定义异常应该具有以下三个特征:

①  继承自System.ApplicationException类,并且使用Exception作为自定义异常类名的结尾

②  包含三个构造函数:一个无参构造函数;一个字符串参数的构造函数;一个字符串参数,一个内部异常作为参数的构造                函数

③  抛出自定义异常:throw new MyException(); 捕获自定义异常:Catch(MyException){  }

举个例子:

 1 public class MyException : ApplicationException
 2     {
 3         private string error;
 4         private Exception innerException;
 5         //无参数构造函数
 6         public MyException()
 7         {
 8
 9         }
10         //带一个字符串参数的构造函数
11         public MyException(string msg)
12         {
13             error = msg;
14         }
15         //带有一个字符串参数和一个内部异常信息参数的构造函数
16         public MyException(string msg, Exception exception)
17         {
18             innerException = exception;
19             error = msg;
20         }
21         public string GetError()
22         {
23             return error;
24         }
25     }

五、总结

异常处理的优势:

对用户来说,在程序发生错误时,不至于程序崩溃,而可以给出提示信息,提升用户的使用体验

对开发人员来说,可以在短时间内找到程序发生错误的位置,进而提高效率

从SQLServer转储数据到MySQL

前一段时间,由于项目需要将数据库从SQLServer迁移到MySQL,在网上百度了很久,基本都是通过SQLyog实现的。其实使用平时常用的数据库管理软件Navicat Premium也能做到,并且操作简便。

接下来我介绍一下具体的操作流程

1、首先安装MySQL和Navicat Premium数据库管理软件

2、使用NaVicat Premium连接本地MySQL数据库

3、新建要导入数据的数据库此处我的数据库名为AlphaGo

4、在要导入数据的数据库表上右键选择导入向导,选择ODBC点击下一步

5、数据链接属性选择Microsoft OLE DB Provider for SQL Server点击下一步

6、输入连接到SQLServer数据库的连接信息,并勾选允许保存密码,然后点击确定。此处我连接本地的SQLServer数据库

7、选中要导入到MySQL的表点击下一步

8、此时可以修改导入后的对应表名,此处不做修改,点击下一步

9、此处可以修改具体每个表的字段类型,此处不做修改,点击下一步

10、默认选中添加记录到目标表,点击下一步

11、点击开始,查看提示信息如图,数据导入成功

c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL的更多相关文章

  1. 从SQLServer转储数据到MySQL

    前一段时间,由于项目需要将数据库从SQLServer迁移到MySQL,在网上百度了很久,基本都是通过SQLyog实现的.其实使用平时常用的数据库管理软件Navicat Premium也能做到,并且操作 ...

  2. SQLServer导出数据到MySQL

    1从SQLServer导出数据 执行BCP: bcp "..." queryout "F:\test.txt" -c –S1.2.3.4 -Usa -P1111 ...

  3. c#基础之异常处理及自定义异常

    一.什么是c#中的异常? 异常是程序运行中发生的错误,异常处理是程序的一部分.c#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说System.Exception类 ...

  4. SqlServer导入数据到MySql

    1.下载MySql ODBC Driver并进行安装.例如我下载的这个安装包是mysql-connector-odbc-5.1.6-win32.msi. 2.装完后,添加odbc数据源: 3.在sql ...

  5. sqlserver把数据导入mysql

    sqlserver库 navicat逆向表到模型 转换模型为... 选择mysql 建模转换后导出sql 导出sql后,再mysql库中执行该sql(该sql为表结构)执行sql后,使用navicat ...

  6. sqlserver导入数据到mysql的详细图解

    SQL Server 迁移数据到MySQL 一.背景 由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL:由于 ...

  7. scrapy基础知识之将item 通过pipeline保存数据到mysql mongoDB:

    pipelines.py class xxPipeline(object): def process_item(self, item, spider): con=pymysql.connect(hos ...

  8. Python 基础之 异常处理

    python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理?  先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...

  9. Springboot的异常处理与自定义异常

    园友们好,元旦很快就到来了,提前祝各位园友们元旦快乐,今天给大家分享一个工作中必用一个知识点,就是使用枚举构建自定义异常并应用于springboot的异常处理器.开始之前我先把这个案例的结构大致说明一 ...

随机推荐

  1. " 初窥 " nginx

    1. 无题 第一次听到Nginx这个词,还是两年前的事儿了,最近常逛CSDN,越来越频繁的接触到这个词汇,今天看了些资料,简单的总结下,作为入门. 2. 背景介绍: Nginx (发音同 engine ...

  2. python环境搭建-Pycharm模块安装方法

    不懂直接看图顺序操作: 方法一: 方法二:

  3. iOS开发-UINavigationController简单介绍

    导航条或者说导航栏目现在在App中基本上也算是标配,类似于父子级别的味道在里面,UINavigationController就是负责简化这一实现功能的,属于iOS开发中比较常用的一种容器View co ...

  4. WF4.0(1)---WorkFlow简介

    编程编的越久就发现自己以前的语文真的没学好,写个随笔取个名字都需要思考半天,以前工作的时候只是听说过工作流,知道的范围仅限于工作流在OA审批流程中用的比较多,现在自己实实在在的用工作流也做过不少项目, ...

  5. AS 常用插件 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. Windows服务器PHPstudy配置安装微擎教程

    此教程只适于无环境的新服务器,有环境请勿安装用电脑上面的远程桌面连接登陆服务器.1,下载微擎安装包,下载PHPstudy,下载V9运行库.安装PHPstudy.安装V9运行库.准备好3个. <i ...

  7. Jquery 获取第一个子元素

    <ul>  <li>John</li>  <li>Karl</li>  <li>Brandon</li></u ...

  8. PHP PSR基本代码规范(中文版)

    PSR-1 基本代码规范 本篇规范制定了代码基本元素的相关标准,以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 “必须”("MUST").“一定不可/一定不能”(&qu ...

  9. Spark踩坑记:共享变量

    收录待用,修改转载已取得腾讯云授权 前言 前面总结的几篇spark踩坑博文中,我总结了自己在使用spark过程当中踩过的一些坑和经验.我们知道Spark是多机器集群部署的,分为Driver/Maste ...

  10. MFC apps must not include windows.h

    用VS2008建立一个DLL项目,一开始的时候不想用MFC, 所以选择的是使用标准Windows库. 使用了一段时间后又想用MFC了,所以把选项改成使用在共享 DLL 中使用 MFC. 但是编译的时候 ...