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. oracle的sqlldr并行导入表不要加索引

    ORA-26002: Table string has index defined upon it. Cause: Parallel load was specified into a table w ...

  2. yii中的若干问题

    一直觉得”程序猿“是个很细致的工作,就像绣花一样,一不小心缝错一针,就可能是个很大的bug,但是为什么平时看起来大而化之的男同胞们确能在这方面如此care呢?? 以下进入正文,省去华丽丽的词语,这里仅 ...

  3. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  4. js中字符串,数字之间转换的常用方法

    var number={ num:, num1:"2你好" }; //将数字转换为字符串 var str=number.num.toString();//十进制 );//二进制 ) ...

  5. ios开发之OC基础-oc小程序

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  6. 要在一般处理程序中获取其他页面的session值

    1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState, ...

  7. OpenGL ES 中Uniform块

    1.采用uniform Block的原因如果你的程序中包含了多个着色器,而且这些着色器使用了相同的Uniform变量,你就不得不为每个着色器分别管理这些变量.Uniform变量的location是在程 ...

  8. WP_3种磁贴效果设置

    private void ApplicationBarIconButton_Click_1(object sender, EventArgs e) { var tileData = new FlipT ...

  9. ntfs安全权限和共享权限的区别

    win xp 最大分区32G,最大文件大小4G. 共享权限是为网络用户设置的,NTFS权限是对文件夹设置的. 用户对文件夹有什么权限就是看NTFS权限的设置. 如果一个文件夹设置成共享,其具体的权限还 ...

  10. Android IOS WebRTC 音视频开发总结(五三)-- 国内IM & RTC SDK列表

    本文主要总结国内提供RTC SDK的产品,转载必须说明出处,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help 自从开通邮件和微信公众号以来,很多 ...