1.异常:就是程序运行过程中出现的不正常情况。

异常的由来:问题本身也是日常生活中一个具体的事物,也可以通过java类的形式进行描述,并封装成对象。
                       其实,就是java对不正常情况描述的对象体现。
对于问题的划分:一种是严重性问题,一种是非严重性问题。
 
对于严重的,java用Error类进行描述。
对于Error类一般不写针对型代码对其进行处理。
 
对于非严重的,java通过Exception类进行描述。
对于Exception类可以使用针对性处理方式进行处理。
 
无论Error类还是Exception类都有一些共性内容,
比如不正常情况的信息,引发原因等。
 
Throwable
--Error
--Exception
 
 
2.异常的处理
java中提供了特有的语句进行处理:
try
{ 需要被检测的代码;}
catch(异常类名 变量)
{处理方式; }
finally
{一定会执行语句; }
 
3.对捕获到的异常对象进行常见方法操作。
 getMessage();获取异常的信息
toString();异常名称:异常信息
printStackTrace();打印异常在堆栈中的跟踪信息,包括异常名称,异常信息,异常出现的位置。
其实JVM默认的异常处理方式就是调用printStackTrace()。
 
在方法上声明异常,
便于提高安全性,让调用处进行处理,不处理则编译失败。
 
对多异常的处理
1.声明异常时,最好声明为更具体的异常类型,这样也能处理的更为具体。
2.对方声明几个异常,就对应几个catch块。
如果多个catch块中的异常有继承关系,使用父类异常的catch块放在最后面,因为catch块是按顺序处理的。另外,不要定义多余的catch块。
 
建议进行catch处理时,catch中一定要定义具体的处理方式,不要简单地定义一句e.printStackTrace();
也不要简单地就写一条输出语句。
 
自定义异常
因为项目中可能出现特有的问题,而这些问题并没有被java所描述并封装成对象,所以对于这些问题,可以按照java中对问题封装的思想,将特有的问题进行自定义的异常封装。
 
自定义异常类应该继承Exception。
继承Exception的原因:
因为异常类和异常对象都需要被抛出,它们都具备可抛性,这是Throwable体系所具有的特性。
这有这个体系中的类和对象才可以被throw和throws操作。
 
 

当在方法内部出现了throw抛出异常对象,那么就必须要给出对应的处理动作。

要么在内部用try,catch处理;
要么在方法上声明让调用者处理。
 
一般情况下,方法内部出现异常,方法上需要声明。
throws和throw的区别
throws 使用在方法上(小括号和大括号之间);
throw使用在方法内部。
 
throws后面跟的异常类名,可以跟多个,中间用逗号隔开。
throw后面跟的是异常对象。
 
Exception中有一个特殊的子类RuntimeException(运行时异常),
如果在方法内部抛出该类或者其子类异常,可以不再方法上声明,编译也可以通过;
如果在方法上声明该类或其子类异常,调用者可以不用进行处理,编译一样通过。
 
之所以不需要再方法上进行声明,是因为不需要调用者进行处理。
当该异常发生,程序就会停止运行,因为在运行时出现了无法继续运算的情况,希望停止程序后,对代码进行修改。
 
自定义异常时,如果该异常的发生,使程序无法继续运行下去时,
就让该自定义异常继承RuntimeException。
 
对于异常分为两种:
1.编译时被检测到的异常。
2.编译时无法被检测到的异常。(运行时异常。及RuntimeException及其子类)

异常处理——毕向东Java基础教程学习笔记的更多相关文章

  1. 匿名内部类--毕向东java基础教程学习笔记

    1.匿名内部类其实就是内部类的简写形式. 2.定义匿名内部类的前提: 该内部类必须继承一个类,或者实现一个接口. 3.匿名内部类的格式:new 父类名或接口名(){定义子类内容:} 4.其实匿名内部类 ...

  2. 内部类--毕向东Java基础教程学习笔记

    内部类的访问规则 1. 内部类可以直接访问外部类的成员,包括私有. 之所以可以直接访问外部类的成员,是因为内部类中持有外部类的引用,格式:外部类名.this 2.外部类要访问内部类,必须建立内部类对象 ...

  3. 多线程--毕向东java基础教程视频学习笔记

    目录 1.多线程运行的安全问题 2.多线程同步代码块 3.同步方法的锁是this 4.静态同步方法的锁是Class对象 5.单例设计模式(面试中的考点) 6.死锁(一个发生死锁的例子) 多线程运行的安 ...

  4. 黑马毕向东Java基础知识总结

    Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记    侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...

  5. 【JAVA】毕向东Java基础视频教程-笔记

    传智播客-毕向东Java基础视频教程 <2013年-33days>版-学习代码记录 链接: GitHub库:JavaBXD33 目录 01-Java基础知识 02-Java对象细节 03- ...

  6. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  7. 毕向东java基础总结

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  8. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

  9. java基础知识学习笔记

    本文知识点以js为参照.对比分析得出笔记.JavaScript之所以叫JavaScript是打算借助java推广自己.虽然都是开发语言,但JavaScript一开始主要运行在 客户端,而java主要运 ...

随机推荐

  1. [linux]scp指令

    实例1:从远处复制文件到本地目录 $scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/ 说明: 从10.6.159.147机器上的/opt/soft ...

  2. js 变量提升+方法提升

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. C#函数式程序设计之用闭包封装数据

    如果一个程序设计语言能够用高阶函数解决问题,则意味着数据作用域问题已十分突出.当函数可以当成参数和返回值在函数之间进行传递时,编译器利用闭包扩展变量的作用域,以保证随时能得到所需要的数据. C#函数式 ...

  4. Requested registry access is not allowed(不允许所请求的注册表访问权)

    尝试创建自定义事件日志时,将会收到“Requested registry access is not allowed(不允许所请求的注册表访问权)”错误消息 EventLog.CreateEventS ...

  5. 推荐使用C++ 11

    如果你的代码工作正常并且表现良好,你可能会想知道为什么还要使用C++ 11.当然了,使用用最新的技术感觉很好,但是事实上它是否值得呢? 在我看来,答案毫无疑问是肯定的.我在下面给出了9个理由,它们分为 ...

  6. C#基本概念列举说明

    1. 关键字      在C#代码中常常使用关键字,关键字也叫保留字,是对C#有特定意义的字符串.关键字在Visual Studio 环境的代码视图中默认以蓝色显示.例如,代码中的using.name ...

  7. sphinx使用小记之使用小结

    sphinx使用小记之使用小结 摘自:http://www.68idc.cn/help/jiabenmake/qita/20150124187789.html 在使用sphinx的过程中有出现一些问题 ...

  8. python 的import机制2

    http://blog.csdn.net/sirodeng/article/details/17095591   python 的import机制,以备忘: python中,每个py文件被称之为模块, ...

  9. PHP OAuth2 Server库

    想找比较正宗的库,查了蛮久的.最后在 oauth官方站上,看到PHP版本的相关链接. 发现都是php 5.3版本以上的环境,基于命名空间的写法编写的. 访问下面这个页面,难得,发现文档给出了5.2版本 ...

  10. js实现向上滚动效果

    源码: <style type="text/css"> #up_zzjs{border:1px solid #ccc;width:170px;height:182px; ...