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. 慕课网-安卓工程师初养成-4-8 Java循环语句之 do...while

    do...while 循环与 while 循环语法有些类似,但执行过程差别比较大. 语法:  执行过程: <1>. 先执行一遍循环操作,然后判断循环条件是否成立 <2>. 如果 ...

  2. 获取oracle 里的表名与字段

    --数据库表名 SELECT distinct A.OBJECT_NAME as TAB_NAME,B.comments as DESCR FROM USER_OBJECTS A , USER_TAB ...

  3. NOIP2007 守望者的逃离-DP

    https://vijos.org/p/1431 描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守 ...

  4. 在集群环境中使用 EhCache 缓存系统|RMI 集群模式

    RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式.EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群.在集群环境中 EhCache 所有缓存对 ...

  5. Visual C++ 开发心得与调试技巧

    自己平时收集的一些技巧与心得,这里分享出来,普及一下知识. 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Releas ...

  6. CSS选择器,CSS3选择器

    CSS选择器 ------->CSS选择器优先级 1>通配符选择器(CSS2) 选择所有元素,所有浏览器都支持. *{ margin:0; padding:o; } 2>元素选择器( ...

  7. java 进制相互转换

    public class test{ public static void main(String[]args){ //十进制转二进制. public static void toBin(int nu ...

  8. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

  9. IOS基础——alloc、init和new方法

    alloc:分配内存. init:初始化. new:代替上面两个函数:分配内存,并且初始化. 注意: 1.在实际开发中很少会用到new,一般创建对象时我们一般是 [[className alloc]i ...

  10. c#自定义控件属性面板及选择资源设置

    博客转移到 http://jacean.github.io/ 继续分享编程经验 因为要做流体布局,但两个控件没办法组合,就做自定义控件.这个控件需要一个text设置文本,一个pic设置图片显示,图片通 ...