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. EF容器---代理类对象

    #region 修改--官方的修改是,先查询,然后修改 /// <summary> /// 修改--官方的修改是,先查询,然后修改 /// </summary> static ...

  2. linq之orderby子句

    在Linq查询中,orderby 子句可以对查询结果集进行排序,可以升序也可以降序,排序关键字可以是多个.默认排序方式为升序. 下面的实例代码OrderQuery()中演示了orderby子句对查询的 ...

  3. C#设计模式——外观模式(Facade Pattern)

    一.概述 在系统设计中,某一个系统可能非常庞大,用户要使用该系统就不得不掌握大量的接口,造成使用的不便.这时可以考虑将该系统细分成一系列子系统并使子系统间的耦合降到最低,利用外观模式提供一个外观对象, ...

  4. 设计模式--适配器(Adapter)模式

    今天学习另一个设计模式,适配器(Adapter)模式,这是一个共同方向,但有特殊要求,就应用到此设计模式.写到这里,想起很久以前,有写过一篇<ASP.NET的适配器设计模式(Adapter)&g ...

  5. 【学习整理】NOIP涉及的数论 [updating]

    扩展欧几里得 求二元一次不定式方程 的一组解. int exgcd(int a,int b,int &x,int &y) { int t; ;y=;return a;} t=exgcd ...

  6. [moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)

    方法一:(使用model) $modelCommunityMail = CommunityMail::find()->where(['com_id'=>$id])->all(); 方 ...

  7. LGLCalender (价格日历)

    一直未能找到自己想要的日历价格,就算右也不是我想要的,今天自己封装了一个,欢迎各位来查阅,不足的地方请指教 最新代码下载地址https://github.com/liguoliangiOS/LGLCa ...

  8. oauth授权协议的原理

    http://oauth.net/2/ 协议的原文.原来是1.0版本,现在是2.0版本了 https://ruby-china.org/topics/15396 https://blog.yorkxi ...

  9. 常用SQL语句优化技巧

    除了建立索引之外,保持良好的SQL语句编写习惯将会降低SQL性能问题发生. ①通过变量的方式来设置参数 好:stringsql = "select * from people p where ...

  10. Bootstrap 我的学习记录4 轮播图的使用和理解

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...