- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章摘要 生活中的异常 程序中的异常 异常的种类 异常的产生 异常的处理(捕获、抛出) 三、异常的种类 受检异常和非受检异常(CheckedException and UncheckedException) 根据编译时检测到否,分为受检异常、非受检异常 受检异常 预期会发生的异常, 必须处理才能通过编译 处理: 在方法声明时通过throws转移 在方法中捕获后进行处理 非受检异常 发生在程序执行期间,不能预测它的发生,编译器不要求一定要进行处理 分为:错误(Errors) 和 运行时异常(RuntimeExceptions) 错误常常指致命性错误,无法处理 运行时异常只有在运行时才能被发现,要求程序处理 如:数组的下标越界、打开不存在的文件、网络无法连接、操作数超出所要求的范围、少了所需加载的类、自定义异常 异常相关类的继承关系 异常是以类的形式进行封装的。 类Exception的子类 RuntimeException的子类 四、异常的产生 产生时机: 在程序执行时自动发现并产生 在程序中用throw语句显式生成、抛出异常 throw java.lang.Throwable类型的变量; 如: throw new ArithmeticException(); throw new ArrayIndexOutOfBoundsException(); 多重catch块 多重catch块代码示例: public class Division { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println(请录入两个数); try { int num1 = input.nextInt(); int num2 = input.nextInt(); double result = num1 / num2; System.out.println(两个数的商是: + result); } catch (InputMismatchException ex) { System.out.println(对不起,不伺候!请录入数字!); ex.printStackTrace(); } catch (ArithmeticException ex) { System.out.println(对不起,不伺候!除数不能为零!); ex.printStackTrace(); } catch(Exception ex){ System.out.println(剩下的错误我都包了!); ex.printStackTrace(); } finally { System.out.println(欢迎使用!); } } } 最后一个catch的是Exception类的对象 输出:对不起,不伺候!请录入数字! 欢迎使用! 异常堆栈段信息 进入第一个 catch块 录入:100和a 输出:对不起,不伺候!除数不能为0! 欢迎使用! 异常堆栈段信息 进入第二个 catch块 录入:100和0 多重catch块 使用多重 catch 语句时,异常子类一定要位于异常父类之前 try { ……… } catch (Exception ex) { ……… } catch (InputMismatchException ex) { ……… } × 异常处理的方式之二:抛出异常 我们可以把当前无法解决的异常抛出,把异常交给调用者处理 public class Student { private int age;//学员年龄,不能小于0 public int getAge() { return age; } public void setAge(int age) { //判断学员年龄是否小于0 if(age 0){ this.age = age; }else{ throw new IllegalArgumentException(年龄必须大于零!
文档评论(0)