c mysql异常捕获异常,c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL...
一、什么是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,在网上百度了很久,基本都是通过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 mysql异常捕获异常,c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL...相关推荐
- mysql 插入秒_教你88秒插入1000万条数据到mysql数据库表,IG牛逼
我用到的数据库为,mysql数据库5.7版本的首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com ...
- mysql导入亿级数据_如何将上亿条大容量数据导入MYSQL
我有一份数据量达到1,0015,0806条的csv文件,现在需要导入Mysql中. 在我电脑中安装的版本是MYSQL8.0.12,常见的管理工具有: 已知的有三种办法: 1.用图形管理工具Navica ...
- 猫眼电影MySQL数据库怎么写_Python3爬取猫眼电影榜并将数据存入MySql
直接上代码: #coding=utf-8 import re import time import pymysql import requests from requests.exceptions i ...
- cpp导入excel到mysql_将EXCEL表格中的数据导入mysql数据库表中
本文转载自http://blog.sina.com.cn/s/blog_5d972ae00100gjij.html 今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命 ...
- php清空mysql数据表,mysql怎么清空数据表数据
在mysql中,可以利用"DELETE"和"TRUNCATE"关键字来清空数据表中的数据,具体语法为"DELETE FROM 数据表;"和& ...
- expec不管异常 try_python3基础之异常处理(通俗易懂)
什么是异常? 异常顾名思义就是不正常的情况,比如说用一个数去除以0,就是一个不正常的情况: 例子中用1除以0,结果出现了异常ZeroDivisionError.出现异常后程序就崩溃了,对于用户而言最不 ...
- 数据基础---mysql数据库操作(一)---基础操作
mysql常识 本文前面主要是对<mysql_5.5中文参考手册>部分内容的整理. 说明:登录mysql后,可以看到mysql> 的提示符,可以输入相关命令:输入命令后,需要以&qu ...
- java 7 异常新特性_Java7的异常处理新特性-addSuppressed()方法等
开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...
- Java基础——Java异常处理机制
一.引言 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中 ...
最新文章
- Scrapy爬取IT之家
- R语言可视化包ggplot2绘制线性回归模型曲线实战( Linear Regression Line)
- MySQL索引的查看创建和删除
- 公共关系计算机操作题,2012年计算机二级Access考前模拟题及答案(8)
- 文本处理利器Linux Awk这样入门☛常见变量的使用
- php的优化模块,php memcache模块优化配置详解
- SharePoint 数据迁移解决方案
- Mysql存储过程名规则_sql 存储过程命名规范
- 配置HTTPS以与Servlet一起使用
- 超赞!arXiv论文如何一键链接解读视频,这个浏览器扩展帮你实现
- 写个自己用的jdbc 简单框架
- AJAX用法、HTTP头部信息
- HTC vive开发
- endnotex9切换中文_EndNoteX9常用方法汇总
- 编译原理实验c语言cfg文法,编译原理实验指导终稿.pdf
- 新浪微博热门话题 (30 分)
- HTML5网页中的链接
- 《SpringBoot实战》读书笔记
- Windows10关机时出现 等待应用程序响应 / ETDCtrlHelper 影响关机
- idea使用mybatis写增删改查
热门文章
- java mongodb开发_Java Tutorial:Java操作MongoDB入门
- spring配置中使用的classpath*:是什么,和“classpath:”的区别
- MOOS学习笔记1——HelloWorld
- fasta文件中DNA to RNA
- button捕捉回车键
- 字符串转换 BSTR/LPSTR/LPWSTR/Char
- 健康身心态的10条法宝
- ICCV 2019 | 厦大提出快速NAS检索方法,四小时搜索NN结构
- OpenCV多目标跟踪与视频分析
- 玩家在RTX 3090显卡中发现了指套