c mysql异常捕获异常,c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL...

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

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

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

①ArrayTypeMismatchException

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

②    DivideByZeroException

用零除整数时引发该异常

③    IndexOutOfRangeException

数组越界异常

④    NullReferenceException

对象引用为空异常

⑤    OverflowException

算数运算溢出

⑥    InvalidCastException

运行时强制转换无效异常

三、异常处理

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

try{

//try块中包含容易产生异常的代码

}

catch{

//异常处理代码

}

finally{

//用于消除try块中分配的任何资源

//以及即使发生异常也需要继续运行的代码

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

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

67d0865f17d9be527254bf8a8ff6c5b4.gif

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 }

67d0865f17d9be527254bf8a8ff6c5b4.gif

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

四、自定义异常

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

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

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

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

举个例子:

67d0865f17d9be527254bf8a8ff6c5b4.gif

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 }

67d0865f17d9be527254bf8a8ff6c5b4.gif

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

五、总结

异常处理的优势:

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

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

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

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

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

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

ecd69709f3c8b719b4e4e334b9b0a716.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

31c163d36ba886c1a77d78538fa0599b.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

18239c579692f01ef9973edd9832ace0.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

6eb585e596c9ff41f58dcde9c1ac0dea.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

952543daf881f530dcd853a7440fb0b6.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

9c251d8510dd949fac67c1a96ad8393f.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

b2b63f5b491ad883059fc62ab5004744.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

1fbe55ec076b8fbf06ea2569142bfc3f.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

a05139d04e6e19c0908376e5059bbb1b.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

cd79633d203f7614dc6843a9c9ba774f.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值