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. OpenGL开发环境配置-Windows/MinGW/Clion/CMake

    因为某些原因,不想用过于臃肿的VS了,转而使用常用的jetbrains的CLion,Clion沿袭了jetbrans的优良传统,基本代码提示功能还是比较好的,不过就是对于windows不熟悉cmake ...

  2. CMD魔法堂:获取进程路径和PID值的方法集

    一.前言    在开发发布更更新工具——更新Weblogic应用模块时,了解到更新Weblogic应用需要先关闭Weblogic应用窗口然后是清缓存.更新应用文件,最后再重启Weblogic应用窗口. ...

  3. (9)分布式下的爬虫Scrapy应该如何做-关于ajax抓取的处理(一)

    转载请注明出处:http://www.cnblogs.com/codefish/p/4993809.html 最近在群里频繁的被问到ajax和js的处理问题,我们都知道,现在很多的页面都是用动态加载的 ...

  4. 写出优美代码的两个方式:一步到位VS迭代优化

    最近把手头这个安卓APP的所有事务性方法都写完了,有了以下体会,新手体会,老鸟轻拍   想写成优美代码的人一般都会有这样的想法: 一定要在写每一句代码,写每一个方法,构造每一个类的时候,都要记得优化: ...

  5. [Solution] DI原理解析及Castle、Unity框架使用

    本节目录 DI介绍 DI基本原理 DI框架 Castle Windsor Unity Autofac Spring.Net DI介绍 控制反转(Inversion of Control,英文缩写为Io ...

  6. Gradle学习系列之五——自定义Property

    在本系列的上篇文章中,我们讲到了增量式构建,在本篇文章中,我们将讲到如何自定义Project的Property. 请通过以下方式下载本系列文章的Github示例代码: git clone https: ...

  7. C#获取url中参数键值对的方法

    方法如下: /// <summary> /// 遍历Url中的参数列表 /// </summary> /// <returns>如:(?userName=keley ...

  8. 【循序渐进学Python】11.常用标准库

    安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...

  9. 单例(C#版)

    单例: 一个类只有一个实例.巧妙利用了编程语言的一些语法规则:构造函数private, 然后提供一个public的方法返回类的一个实例:又方法和返回的类的实例都是static类型,所以只能被类所拥有, ...

  10. csharp: Procedure with DAO(Data Access Object) and DAL(Data Access Layer)

    sql script code: CREATE TABLE DuCardType ( CardTypeId INT IDENTITY(1,1) PRIMARY KEY, CardTypeName NV ...