黑马程序员-异常介绍与处理
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
1、 什么是异常?
1、程序运行时发生的错误。(错误的出现并不总是程序员的原因,有时应用程序会因为最终用户或运行代码的环境改变而发生错误。比如:1、连接数据库时服务器停电了;2、操作文件时文件没了、权限不足等;3、计算器用户输入的被除数是0;4、使用对象时对象为null;等等)
2、.net为我们把“发现错误(try)”的代码与“处理错误(catch)”的代码分离开来。
2、异常处理的一般代码模式:
1、try{…可能发生异常的代码…} catch{…对异常的处理…} finally{…无论是否发生异常、是否捕获异常都会执行的代码…}
2、try块:可能出问题的代码。当遇到异常时,后续代码不执行。
3、catch块:对异常的处理。记录日志(log4net),继续向上抛出等操作。(只有发生了异常,才会执行。)
4、finally块:代码清理、资源释放等。无论是否发生异常都会执行。
3、案例:int x=5;int y=0;int z=x/y; 程序运行时出错,后续的内容无法运行。
4、程序一旦有一个功能发生异常,整个程序崩溃其他功能也无法正常运行。
5、 错误的几种形式:
1、 语法错误:语法错误一般编译器会帮我们解决。
2、 逻辑错误:编译没问题,执行不报异常,就是结果不对。
3、异常:在运行时发生的错误,异常一般会导致程序崩溃。
A、 空指针异常:未将对象引用设置到对象的实例。
Person p=new Person();
P=null;
p.Name=”yzk”;
Console.WriteLine(P.Name);
Console.ReadKey();
B、 试图除以零异常:除数不能为0。
Int n=10;
Int m=0;
Int sum=n/m;
Console.WriteLine(sum);
Console.Readkey();
C、 输入字符串的格式不正常
string str=”abcd”;
int n=Convert.ToInt32(str);
Console.WriteLine(n);
Console.ReadKey();
6、 catch块的三种写法
A、 第一种写法,这种写法可以捕获所有的异常。
Catch
{
Console.WriteLine(“异常了。”);
}
B、 第二种写法,如果参数类型是:Exception,表示可以捕获所有的异常。
catch(Exception ex)
{
Console.WriteLine(“异常了。{0}”,ex.Message);
}
C、 第三种写法:根据参数类型的不同,可以捕获不同的异常。如参数类型是:NullReferenceException,表示只能捕获空指针异常。
Catch(NullReferenceException ex)
{
Console.WriteLine(“异常了。{0}”,ex.Message);
}
注:捕获所有异常的catch不能写在具体异常前面。
Exception类是所有异常类的祖宗类。
7、 异常处理代码的其他几种形式:
A、 try->多个catch->一个finally
B、 try->(1个或多个catch),多个catch的顺序问题。没有finally。
C、 try->finally(只能有一个),没有catch也可以。
注意点:
A、 发生异常后,try块中,异常代码后的代码不会执行。
B、 finally块中的代码,无论是否发生异常都会执行。
C、 finally中不能写return语句。
D、 try中有return语句,finally也会执行。
E、 即便没有catch,finally中的代码也会执行,但finally之后的代码则不会。
8、 Exception ex异常也是对象,封装了异常发生时的一些信息。
9、 Exception类主要属性:Message、StackTrace、InnerException
10、 扔出自己的异常,扔:throw。抓住:catch
建议:通过逻辑判断(if-else)减少异常发生的可能性。
--------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
转载于:https://www.cnblogs.com/zxh930508/p/3544405.html
黑马程序员-异常介绍与处理相关推荐
- 黑马程序员-java介绍及开发环境搭建
---android培训java培训期待与您交流!---- 1.JAVA简介 欢迎进入JAVA编程语言的世界! 由sun公开主导开发的一款语言,目前主要应用在企业级web和移动端开发.完全面向对象,并 ...
- HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第五章课后习题(课程介绍专栏效果)
黑马程序员编著的教材 HTML+CSS+JavaScript网页制作案例教程 第五章:"课程介绍"专栏-课后习题参考代码 题目原型: 请结合给出的素材,运用列表标记,超链接标记以 ...
- 黑马程序员_异常(老毕视频总结及《疯狂java》补充)
----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+A ...
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---最新技术--篇
第八章 最新技术(评论区留言获取原件) 一. Redis 1. Redis 的特点? Redis 是由意大利人 Salvatore Sanfilippo(网名: antirez)开发的一款内存高速缓存 ...
- 黑马程序员入学Java知识——精华总结
黑马程序员入学Java知识--精华总结 J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结! 一.黑马程序员-java概述与基础知识 6 1.何为编程? 6 2.Java语言 ...
- 黑马程序员顺义校区php_PHP面向对象开发视频教程[黑马程序员]
PHP面向对象开发教程 中级共14节课 本套教程讲解面向对象部分内容,从面向对象基础到面向对象高级.从自主开发面向对象到系统使用面向对象.从理论讲解到图解,全方位讲解面向对象. [讲解方式] 系统梳理 ...
- 黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!
MyBaits 写在最前 本篇文章是我学完黑马程序员 JavaWeb MyBatis 的总结分享,定位呢是最大小白友好的快速入门,欢迎大家一起交流技术! 文章目录 MyBaits 代码仓库 MyBat ...
- 黑马程序员——面向对象(1)
------ Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 三.黑马程序员-面向对象(1) 面向对象(Object-Oriented,简称OO)就是一种常 ...
最新文章
- struts2登录后返回登录前的页面
- 关于Enterprise Library 两个网占.
- java中子类继承父类程序执行顺序问题
- EF框架 对字段属性为NULL的空值处理 类型前面加上?保证EF列表读取显示数据不会报异常...
- 先自己看文档和百度再沟通
- C++多小球非对心弹性碰撞(HGE引擎)
- 快速排序与合并排序的分而治之
- uploadify多文件上传插件
- 浅谈UML类图中类之间的5种关系
- 系统、应用监控的缜密思路,堪称性能瓶颈的克星
- 【数据结构与算法】平衡二叉树、红黑树
- OFD文件结构--Signatures.xml
- 大整数乘法(Java)
- Win10环境下,SecureCRT连接不上虚拟机,显示连接超时Connection time out. 而且网络连接里没有网络适配器VMnet1和VMnet8,互ping也不同。...
- 转 fpga学习经验1
- 打造属于自己的 linux版(硬盘版或电子盘)view5 终端
- Windows 上的高效启动器—— Listary
- 互联网+智慧用电:智能微型断路器应用发展浅析-李亚俊
- switch在内存中的实现机制
- CleanMyMac X的免费版电脑系统瘦身工具
热门文章
- linux6.3支持gcc版本,Linux编程中GCC对C++标准支持和如何选择GCC版本使用
- linux ls 输出对齐,理解 Linux 中 `ls` 的输出
- mysql分组取日期最大的记录_mysql 分组 group by, 排序 取每条记录中,时间最大
- 信息系统项目管理师优秀论文:论信息系统范围管理
- Nginx映射本地静态资源时,浏览器提示跨域问题解决
- SpringBoot中定时任务与异步定时任务的实现
- AndroidStudio中调试时提示waiting for debugger的奇葩解决
- Android中Chronometer计时器的简单使用
- Winform中自定义xml配置文件后对节点进行读取与写入
- C#中将list进行序列化并使用SharpZipLib进行压缩