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. CentOS安装 Docker

    系统的要求64 位操作系统,内核版本至少为 3.10. Docker 目前支持 CentOS 6.5 及以后的版本,推荐使用 CentOS 7 系统. cat /proc/version 首先,也是要 ...

  2. PNG图片数据解析

    PNG是一种非常流行的图片格式,它不仅支持透明效果,而且图片数据经过了压缩处理,所以广泛用于web等应用. PNG的文件格式: PNG文件中的数据,总是以一个固定的8个字节开头: (图片来自http: ...

  3. Android基础总结(1)

    1.Android开发的特点 四大组件:活动(Activity).服务(Service).广播接收器(Broadcast Receiver).内容提供器(Content Provider).其中活动是 ...

  4. svn 检出代码报ssl错误问题的解决

    svn: OPTIONS of 'https://192.168.11.185/svn/ahwater-cloud': SSL handshake failed: SSL error: Key usa ...

  5. A script job for rebuild DB in AX 2012

    -- Ensure a USE <databasename> statement has been executed first. SET NOCOUNT ON; DECLARE @obj ...

  6. win7和win8如何设置快速启动栏

    a.在任务栏上右键 -> 工具栏 -> 新建工具栏 -> 跳出选择文件夹对话框,在文件夹里面(光标山洞处)输入这个路径,然后按回车: %userprofile%\AppData\Ro ...

  7. iOS 平台开发OpenGL ES程序注意事项

    本人最近从Android平台的OpenGL ES开发转到iOS平台的OpenGL ES开发,由于平台不同,所以开发中会有一些区别,再次列出需要注意的几点. 1.首先需要了解iOS主要开发框架,再次仅介 ...

  8. js 获取当前日期时间 格式为 yyyy-mm-dd hh:MM:ss

    ------------------------------------------------------------------------------------ js 获取当前日期时间 格式为 ...

  9. Linux:系统的密码忘记了,登录不上

    可先通过进入单用户模式,修改下密码再登录记录. 第一步: 重启系统,在进入系统之前不断的按键盘左上角的“Esc”键,会进入如下页面: 然后按e进入编辑页面 第二步: 进入如下页面后,通过键盘的上下方向 ...

  10. hbase日常运维管用命令,region管理

    1         Hbase日常运维 1.1       监控Hbase运行状况 1.1.1        操作系统 1.1.1.1 IO 群集网络IO,磁盘IO,HDFS IO IO越大说明文件读 ...