JAVASE_异常机制

  1. 异常:程序在运行时期发生的不正常情况
  2. 异常的由来:问题也是一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象
  3. 对于问题的划分:严重的问题(Error类来进行描述),非严重的问题(Exception类进行描述)。
  4. Throwable异常类的父类。
    |--Error错误:一般不编写针对性的代码对其进行处理
    |--Exception异常:可针对其造成的异常进行针对性的处理
  5. 对异常进行处理的好处是:异常处理之后,以后代码之后的程序能够继续运行,若不处理,程序将会在异常发生的地方停止,不在运行后续代码
  6. 异常处理的原则:
    1.编写代码时,对异常处理,异常不能笼统,需要尽量的抛出或捕获其详细的异常的对象名称
    2.处理异常时,切不可无针对性处理,直接在e.toString()时若未知异常程序将把问题隐藏
    3.通常我们在软件开发时,软件发生的异常会把异常信息保存到异常文件中,记录着网站(程序)的运行情况和出错信息,即日志


  • 处理异常的形式:
    1.捕获异常:
    	try{
    		...假设发生 XXXException , XXX1Exception ...
    		return
    	}catch(XXXException e){//有针对性的处理
    		....
    	}catch(XXX1Exception e){
    		....
    	}catch(Exception e){
    		//发生未知异常。建议把程序停止(使问题无法被隐藏)
    		...把异常信息打印到错误日志...
    		exit(0);
    	}finally{
    		//即使发生异常,finally仍然要执行
    	}
    *try-return-catch-finally finally永远在return之前执行	
    	
    2.抛出异常:
    	//声明我定义的功能函数存在一定条件下的异常,调用本函数必须进行异常处理
    	int div( int a , int b ) throws ArithmeticException, FushuException {
    	//声明调用本函数可能会产生ArithmeticException, FushuException个异常
    		if( b < 0 )
    			throw new FushuException();
    		return a / b ;
    	}
    
    
    3.自定义异常
    class FushuException extends Exception{//继承父类Exception类
    }
package java异常;


public class 功能方法采用抛出异常 {

public static void main(String [] args){

<Demo d = new Demo();
try{
d.div(4, -1);
}catch(ArithmeticException e){//对本异常进行匹配
System.out.println("除零了");
}catch(FushuException e1){
e1.printStackTrace();
}catch(Exception e2){//在出现异常的情况下,若上面两个catch未匹配成功,那么必定在本条语句捕获
System.out.println("未知异常");
}
System.out.println("over");
}
}


/**
 * 注意在,编写功能型函数时采用的是抛出异常的处理方式(声明函数内可能发生的异常),而
 * @author Administrator
 *throw和throws的区别:
 *throw用在函数内(后面紧跟异常对象),throws用在函数上(声明)
 */
class Demo{
//声明我定义的功能函数存在一定条件下的异常,调用本函数必须进行异常处理
int div( int a , int b ) throws ArithmeticException, FushuException {//声明本函数可能会产生2个异常
//if( b < 0 )
//throw new FushuException("出现了除零异常");//父类不在对其进行异常处理
/*
 * 注意:throw new FushuException("");就不进行异常声明,若进行了异常声明就不进行抛出异常,
 * 抛出异常会把异常隐藏在本方法内,而声明异常则把问题交给类调用者
 * 需要封装的功能:采用throw的方法
 */
return a / b ;
}
}


/**
 * 自定义异常:
 * 
 * 因为在项目中会出现一些特有的问题,而这些问题并未被java描述而封装对象,
 * 而这些问题我们可以采用java的对问题进行封装的思想,将特有的问题,进行
 * 自定义的异常封装
 * 
 * 需求描述:假设在本程序中,除数为负数也是无法进行运算的,那么就得对这个问题进行
 * 自定义的描述
*/
class FushuException extends RuntimeException{//若该异常的发生无法再进行运算就继承RuntimeException
//继承父类Exception类,只有继承了Exception的类才能进行抛出处理
FushuException(String msg){//因为父类把异常信息都定义完成了,子类只需要把构造信息完成就行了
super(msg);
}
FushuException(){}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值