发表于: 2018-01-22 22:34:54
1 543
一、今天完成的事情
1、学习svn操作,看教程学会了基本的使用
2、看了一会nginx反向代理的深入研究,没太看懂
3、准备小课堂,明天小课堂不出意外应该是讲Java异常处理机制 try catch相关
以下是总结:
什么是异常处理机制
异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。
Java中用两种方法处理异常
1、在发生异常的地方直接处理
2、将异常抛给调用者,让调用者来处理
异常分类
1、可查型异常:java.lang.IOException 程序正确,但因为外在的环境条件不足以引发。例如程序视图打开一个不存在的远程端口或者是打开不存在的文件时,这不是程序本身的逻辑错误,很可能是远程机器名字错误(用户拼写的路径错误),这种异常Java编译器是要求强制处理的,如果步捕获这类异常,程序将不能通过编译。
2、运行期异常:java.lang.RuntimeException 意味着程序存逻辑错误,比如数组越界,除数为0,入参不满足规范......这类异常需要更改程序配置来避免,Java编译器强制要求处理这类异常
3、错误:java.lang.Error 一般开发过程中不多见,遇到了也很难通过调试程序来解决。他可能源于程序的bug,但更多的是源于环境的问题,错误再程序中无需处理,而由运行环境处理
顶层是java.lang.Throwable类,检查性异常,运行期异常,错误都是这个类的子类。
Java异常处理方法
try catch
1、如果try块中有可能出现多种异常
finally
finally关键字保证无论程序使用任何方式离开try块,finally中的语句都会被执行,它相当于一个万能的保险,即使前面的try块发生的异常没有对应的catch块来捕获,finally块也能马上执行。
只有类似以下极端情形出现,finally块才不会被执行
1、finally块中发生了异常
2、程序所在线程死亡
3、在前面的代码中用了System.exit()
4、关闭CPU
因此,当你需要一个地方来执行在任何情况下都必须执行的代码时,就可以将这些代码放入finally块中。当你的程序中使用了外界资源,如数据库连接,文件等,必须将释放这些资源的代码写入finally块中。
必须注意的是:在finally块中不能抛出异常。JAVA异常处理机制保证无论在任何情况下必须先执行finally块然后再离开try块,因此在try块中发生异常的时候,JAVA虚拟机先转到finally块执行finally块中的代码,finally块执行完毕后,再向外抛出异常。如果在finally块中抛出异常,try块捕捉的异常就不能抛出,外部捕捉到的异常就是finally块中的异常信息,而try块中发生的真正的异常堆栈信息则丢失了。
异常机制在实际应用中应该注意的地方
1、处理异常。针对该异常采取一些行动,例如修正问题、提醒某个人或进行其他一些处理,要根据具体的情形确定应该采取的动作,所以很多时候调用printStackTrace()算不上已经“处理好了异常”。printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程,但只提供了一些最基本的信息,未能说明实际导致错误的原因,同时也不易解读。
因此,在出现异常时,最好能够提供一些文字信息,例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组织printStackTrace提供的信息。
2、切忌用一个catch语句捕获所有的异常。最常见的情形就是使用catch(Exception ex)语句。在绝大多数情况下,这种做法不值得提倡。所以在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。
3、如果程序用到了文件、Socket、JDBC连接之类的资源,即使遇到了异常,也要正确释放占用的资源。所以还要充分运用finally关键词。
4、应尽量减小try块的体积
我们常常习惯把大量的代码放入单个try块,然后再在catch语句中声明Exception,而不是分离各个可能出现异常的段落并分别捕获其异常。这种做法为分析程序抛出异常的原因带来了困难,因为一大段代码中有太多的地方可能抛出Exception。
5、当执行循环的过程中抛出了异常,要仔细分析并全面考虑可能出现的异常以及这些异常对执行流程的影响,对已经输出但不完全的数据要做好应对措施,否则使用数据的人或者设备收到一份不完整的数据,却得不到任何有关这份数据是否完整的提示,网网比异常导致的系统停止运行带来的损失更大
二、明日计划完成的事情
1、准备小课堂ppt
2、讲完小课堂之后一系列相关的资料提交
3、继续任务进度,计划年前做完任务5
三、遇到的问题
1、Java基础不扎实,代码认识得太少,敲不出有深度的代码,导致小课堂讲异常的时候只能用最基础简单的场景来演示
2、白天容易犯困,作息有点乱了,需要调整
四、收获
1、对Java的异常处理机制有了更深入全面的理解,对以后写代码有不小的帮助
2、对svn的操作更熟练了
task3开始时间:2017.01.21
预计demo时间:2018.01.27
暂无延期风险
http://task.ptteng.com/zentao/project-task-350.htm
评论