当前位置 博文首页 > 张子又:Java中的异常另外两个关键字:throw,throws

    张子又:Java中的异常另外两个关键字:throw,throws

    作者:[db:作者] 时间:2021-07-17 22:39

    异常关键字

    try…catch是一种积极处理异常的方式
    throws是一种消极处理异常的方式

    throws:如果代码发生错误,就把这个错误异常类型声明在方法后面,谁调用,谁处理
    * 注意:throws代表有可能会抛出异常
    * 注意:如果最后一层是main方法,记着try…catch…,否则异常就传到JVM中了,后面的代码也不能正常执行了
    * 注意:异常可以向上传递
    * 注意:我们可以一次性向外声明多个编译时异常,谁调用,谁处理,类型,顺序,个数要一致
    * 注意:向外声明的异常类型越具体,对调用者越好,很明确异常类型,可以快速的处理异常
    * 注意:如果一个方法向外声明了一个异常,那么调用者必须声明一个大于等于这个异常的类型,反之则不行

    throw:在方法体中抛出一个异常对象,表示一定会抛出异常
    在开发中,有时候,我们需要手动抛出一个异常对象,使得这个代码的走向,去另外一个地方
    *注意:throw表示一定会抛出异常,无论代码对错
    *注意:throw抛出的是一个异常对象

    面试题:throws和throw的区别?

    1:位置
    throws出现在方法头
    而throw出现在方法体。
    2:抛出区别
    throws表示出现异常的一种可能性,并不一定会发生这些异常;声明的是一个异常类型
    throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
    3 处理异常方式
    两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,
    但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

    编程习惯
    1:在写程序时,对可能会出现异常的部分通常要用try{…}catch{…}去捕捉它并对它进行处理;
    2 :用try{…}catch{…}捕捉了异常之后一定要对在catch{…}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
    3: 如果是捕捉IO输入输出流中的异常,一定要在try{…}catch{…}后加finally{…}把输入输出流关闭;
    4:如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。

    既要制造异常,还要处理异常

    public static void show(String url){
    	
    	
    	try {
    		throw new NullPointerException();
    	} catch (Exception e) {
    	 
    		e.printStackTrace();
    	}
    	System.out.println("你好吗");
    	/*if(url.equals("http://www.baidu.com")){
    		//request.url("http://www.baidu.com"); //正确跳转
    	}else{
    		try {
    			throw new Exception(url);
    		} catch (Exception e) {
    		//	request.url("http://www.error.com");
    			e.printStackTrace();
    		} 
    	}*/
    	
    	//System.out.println(10/2);//正确代码
    	
    	//throw new NullPointerException(); //异常代码
    	//return;
    	//System.out.println("123123"); //异常后面的代码
    	
    }
    public static void main(String[] args) throws Exception {
    	show("http://www.baidu.com");
    }
    
    cs