- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java异常处理学习完本章后你应该知道并掌握:异常概念类层次
Java异常处理
学习完本章后,你应该知道并掌握:
异常概念
类层次
处理机制
处理方式
处理原则
自定义异常
概述
在《java问题。虽然javajava要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意
任务分析
在进行程序设计时,错误的产生是不可避免的,如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?这是任何程序设计语言都要解决的问题。
所谓错误,是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的鲁棒性(强壮性,robust),程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。
时间:3课时
相关知识
Error:由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,Java程序不做处理。Java虚拟机在运行时生成的例外,如被0除等系统错误、数组下标超范围等,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大。因此由系统检测, 用户可不做处理,系统将它们交给缺省的异常处理程序(当然,必要时,用户可对其处理)。编译器会对此作检查,要么在方法体中声明抛出checked Exception,要么使用catch语句捕获checked Exception进行处理,不然不能通过编译Java编译器要求Java程序必须捕获或声明所有的非运行时异常。Error 类及其子类描述了 java 运行时系统的内部错误和资源耗尽错误。出现这样的错误除了通知用户,并接尽力使程序安全地终止之外,没有更好的办法Exception 类的层次结构又分为两个分支:一个分支由 RuntimeException 派生,另外一个分支包含除 RuntimeException 类之外的异常类java虚拟机java虚拟机寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,在所有的finally块代码被执行和当前线程的所属的ThreadGroup的uncaughtException方法被调用后,遇到异常的当前线程被中止package com.hwadee.train.grammar;
public class TestException {
public static int divide(int i, int j) {
System.out.println(divide call start);
int result = i / j;
System.out.println(divide call end!);
return result;
}
public static void compute() {
int i = 1, j = 0;
divide(i, j);
System.out.println(program exit...);
}
public static void main(String[] args) {
compute();
}
}
通过try catch处理掉
try {
int result = i / j;
}catch(ArithmeticException e) {
e.printStackTrace();
}
finally {
System.out.println(finally ....);
}
通过throw throws抛出
如果方法遇到一个不知道如何处理的意外情况(abnormal?condition),那么它应该抛出异常public static int divide(int i, int j) throws ArithmeticException {……}
处理原则
底层代码将异常抛出
如果希望客户程序员采取措施,那么抛出检查型异常传入非法输入参数不要一次捕获所有的异常使用finally块释放资源自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时,根据异常名就可以知道哪里有异常,根据异常提示信息进行修改class TransferLimitExcetion extends Exception {
public TransferLimitExcetion(double money) {
super(money + exceed transfer limit:20000);
}
}
public class TestException {
private static final int MAX_TRANSFER_MONEY = 20000;
public void tran
文档评论(0)