MODULE 7 Exceptions
----------------------------
程序正常执行过程中遇到的意外情况

引发异常的因素:
1)程序本身的内在因素
2)外部因素引发的,程序无须关注
例:数组访问越界异常; 除以0;

异常发生:
1)会在发生的位置抛出异常
2)程序的正常流程会发生改变
3)对于抛出的异常需要进行捕获处理
try {
//正常的程序执行流程
}catch(异常1){
//异常1的处理代码
}catch(异常2){
//异常2的处理代码
}finally{
//无论是否出现异常,都要去执行的
}

注意:
当捕获多个异常是,且这些异常之间存在父子关系,一定要先捕获子异常,再捕获父异常(因为异常的捕获是顺序进行的)

try{
//
}catch(IOException e)){ //小异常
//deal with IOException
}catch(Exception e){ //大异常
//deal wwith Exception
}

练习:DivTest.java
方法:div(int i,int j){} //实现i/j,并打印输出结果
main:调用div()方法,测试

异常的传播栈
-------------------------
1)异常会在发生的位置一级级向它的上层调用者抛出
2)在抛出的传播路径上,任何一个点上都可以捕获处理该异常
3)一旦异常被捕获,则它的上层调用者不再受到影响,但若不处理,最终会抛给JVM,导致程序意外终止

异常的常用方法:
1)getMessage() 获取该异常的简单描述信息,返回的是字符串
2)printStackTrace() 打印出异常完整的传播路径

练习:DivTest1.java
main --> div1() --> div2() --> div3() --> div()

常见异常
1.java.lang.ArithmeticException 算数异常 除以0时
2.NullPointerException 空指针异常
Student s;
s.display();
对一个空对象进行操作
3.ArrayIndexoutofBoundsException

异常的体系结构
--------------------
Object --> Throwable -->
1.Error
无视程序本身的错误,而是外部因素引发的,程序直接终止。(如系统崩溃,内存不足等)
2.Exception
java中所有的异常类都继承自该类,程序可以进行处理的那些异常
1)RuntimeException 又叫 unchecked exception
属于程序无法自我恢复的异常,用try/catch处理无意义,往往是程序的逻辑错误引起的,应尽量避免这类异常的发生
2)非RuntimeException 又叫 checked exception
程序中必须要try/catch处理的异常

从RuntimeException继承的异常都为unchecked
从Exception或RuntimeException之外的异常继承的异常都是checked

练习:
自定义异常类,Account银行账户存款/取款,
原有的:
当金额非法是,返回0;
改造的:
提示用户金额非法,并告知账户余额和操作金额

Assertion断言
----------------------------
通过简单的参数设置,控制程序中的调试语句生效或失效

应用:
程序中用于临时调试的代码,希望系统发布时控制这些代码失效,而在调试时是代码生效

关键字:assert
用法:
assert 布尔表达式;
assert 布尔表达式:字符串

判断布尔表达式:
结果为true时,程序继续往下执行
结果为false时,抛出java.lang.AssertionError异常,提示信息就是布尔表达式后面的字符串

运行时通过参数控制程序中的断言:
java -ea AssertionTest

core java 7 exception的更多相关文章

  1. applet示例 WelcomeApplet.java <Core Java>

    import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.Grap ...

  2. Error initializing endpoint java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??

    2010-5-18 22:00:38 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 信息: The Apache Tomca ...

  3. java.lang.Exception: Socket bind failed: [730013] An attempt was made to acc

    在CMD命令行中启动运行startup.bat,启运程序总是闪退,查看日志发现如下错误: 26-Jan-2016 18:12:34.463 SEVERE [main] org.apache.coyot ...

  4. Core Java Interview Question Answer

    This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...

  5. java.lang.Exception: Socket bind failed 服务器端口冲突-->修改端口

    需要修改三个端口号:%apache_tomcat6%/conf/server.xml 四月 11, 2014 11:39:25 上午 org.apache.catalina.core.AprLifec ...

  6. java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??

    严重: Error starting endpoint java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???? ...

  7. java.lang.Exception: Socket bind failed

    1.错误描述 严重: Failed to initialize end point associated with ProtocolHandler ["http-apr-8080" ...

  8. java.lang.Exception: No tests found matching Method tes(com.bw.test.Testrefiect) from org.junit.vintage.engine.descriptor.RunnerRequest@3bfdc050 at org.junit.internal.requests.FilterRequest.getRunner

    junit   方法  没有加上注解  @Test java.lang.Exception: No tests found matching Method tes(com.bw.test.Testre ...

  9. java.lang.Exception: DEBUG STACK TRACE for PoolBackedDataSource.close().

    java.lang.Exception: DEBUG STACK TRACE for PoolBackedDataSource.close(). java.lang.Exception: DEBUG ...

随机推荐

  1. SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  2. 详细讲解JAVA中的IO流

    一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等.        ...

  3. android service 学习

    参考:http://www.cnblogs.com/allin/archive/2010/05/15/1736458.html http://www.cnblogs.com/allin/archive ...

  4. 递归遍历XML节点属性和属性值

    public static XmlDocument FileMergedIntoXML(string strXmlPathPublic) { string strXmlPathPublic = str ...

  5. mongodb replica set(副本集)设置步骤

    网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastd ...

  6. 深入了解Qt(二)之元对象系统(Meta-Object System)

    深入了解Qt主要内容来源于Inside Qt系列,本文做了部分删改,以便于理解.在此向原作者表示感谢! 在Qt Meta Object System-元对象系统这篇文章中,从底层实现的源码剖析了元对象 ...

  7. Unieap3.5-Grid+Form下拉列表高度设置

    Form <div id="SUNIT_ID" name="SUNIT_ID" dojoType="unieap.form.ComboBox&q ...

  8. vim中查找指定字符串

    0x01 自当前光标位置向上搜索 /pattern   Enter    (pattern表示要搜索的字符串) 0x02 自当前光标位置向下搜索 ?pattern   Enter 0x03 n继续从同 ...

  9. 001MSP430概述

    1.MSP430系列单片机的特点 (1)超低功耗:生来就是为超低功耗设计的,从CPU内核结构到片上外设,以及整个芯片的生产制造都是本着超低功耗的原则来进行的,所以是一款实实在在的超低功耗单片机: (2 ...

  10. javaSE第二天

    第二天    7 1:关键字(掌握)    7 2:标识符(掌握)    7 (1)就是给类,接口,方法,变量等起名字的字符序列    7 (2)组成规则:    7 (3)注意事项:    8 (4 ...