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. HMM 自学教程(三)隐藏模式

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  2. IOS开发UI基础UITextView相关属性

    UITextView相关属性 •    text: 设置textView中文本_textView.text = @"Now is the time for all good develope ...

  3. 判断Integer值相等最好不用==(未整理)

    今天在开发中判断两个Integer值相等, Integer a = 3; Duixiang duixiang = new Duixiang(); duixiang = DAO.getDuixiang( ...

  4. HTML--Table布局

    <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" Content= ...

  5. 移动web开发总结

    让网页的宽度自适应屏幕<meta name="viewport" content="width=device-width"/>   1)html上加 ...

  6. 【C++】第1章 在VS2015中用C++编写控制台应用程序

    分类:C++.VS2015 创建日期:2016-06-12 一.简介 看到不少人至今还在用VC 6.0开发工具学习C++,其实VC 6.0开发工具早就被淘汰了.这里仅介绍学习C++时推荐使用的两种开发 ...

  7. sql 随机抽取几条数据的方法 推荐

    传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序 ...

  8. 【JS复习笔记】04 数组

    JS里的数组其实并不是一个数组,它其实是一个对象,a[1]这种调用方式其实就是一个字面量为1的属性. 因为这东西实际上是一个对象,所以你就可以理解下面这种声明了吧! var arrName=['我可以 ...

  9. csharp: MongoDB

    安装配置: Install MongoDB on Windows(安装配置官方参考) http://docs.mongodb.org/manual/tutorial/install-mongodb-o ...

  10. struts2 java.lang.StackOverflowError org.apache.struts2.json.JSONWriter

    1. 问题描述: 页面通过异步访问action,    action的方法通过map封装数据,struts的result的type设置为json,后台报错 六月 25, 2016 6:54:33 下午 ...