A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 自渡 初级黑马   /  2019-5-19 20:01  /  1305 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

异常概述: 指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
file:///C:/Users/86136/AppData/Local/Temp/enhtmlclip/Image(1).png
Error是系统内部的错误,运行时报错,是系统的问题,是不能通过修改程序来处理的.
Exception是程序员可以根据问题描述可以处理,我们常说的异常处理就是处理Exception.
异常的分类: 可以分为两种,编译时异常和运行时异常
编译时异常:  在编译期间产生的异常,如果编译期间不处理,编译不能通过
运行时异常: 在运行期间产生的异常,编译期间不会产生异常 (RuntimeException)

异常的处理:通常有两种方式处理异常
第一种:.声明处理异常:  将问题标识出来,报告给调用者。
格式:            修饰符  返回值类型  方法名(参数) throws 异常类名1,异常类名2...{
                }
如果方法内通过throw抛出了编译时异常,而没有捕获处理,那么必须通过throws进行声明,让调用者去处理。
关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常)
注意事项: 如果方法需要使用throws抛出多个异常来处理异常,假设这多个异常时父子类关系,那么就可以直接只抛父类异常.
第二种:.try...catch 捕获处理异常:
格式:
try{
             编写可能会出现异常的代码(监控区)
        }catch(异常类型 e ){       (捕获)
             处理异常的代码
            记录日志//打印异常信息//抛出异常
        }
注意事项:
1.try和catch都不能单独使用
2.不管try中是否出现异常,程序还是会往下执行

异常处理的一些注意事项:
1.运行时异常被抛出可以不处理。即不捕获也不声明抛出。
2.如果父类抛出了多个异常,子类覆盖父类方法时,只能抛出相同的异常或者是他的子集。
3.父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
4.当多异常处理时,捕获处理,前边的类不能是后边类的父类
5.在try/catch后可以追加finally代码块,其中的代码一定会被执行,通常用于资源回收。
6.如果finally有return语句,永远返回finally中的结果,避免该情况
两种处理方式的选择:
原则:如果该功能内部可以将问题处理,就用try,如果处理不了,交给调用者处理,就是用throws.
区别:  
    后续程序需要继续运行就用try
    后续程序不需要继续运行就用throws

5 个回复

倒序浏览
加油!坚持就是胜利
回复 使用道具 举报
加油哦
回复 使用道具 举报
加油哦
回复 使用道具 举报
爱你呦~要永远加油哦
回复 使用道具 举报
还hi赶紧好好学习吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马