try-catch和throws的区别:
    try-catch : 在当前位置处理异常
    throws    :   (语法格式:   在方法签名之后:throws 异常类型)
                    向上抛出异常,可以无限向上抛出,直到抛给main方法,main方法就抛给JVM虚拟机去解决
                    即比如在3个类中,第3个类出现异常,可向上抛给第二个类,第二个类如果不想解决,可继续抛给第一个类中去解决,然后在第一个类中(调用第三个类中方法会出现异常)==》就使用try-catch解决异常


相当于throws可以向上指定抛到某一个类里面去集合解决异常(使用try-catch解决异常),而try-catch是直接处理异常

 

注意:throws后可以同时抛出多个异常类型  ex:public void 方法名() throws ArithmeticException,NumberFormatException{}

throws 原理:有throws的方法的是所有代码中 , 某行代码创建了异常对象,直接去跟throws后的异常类型匹配,如果匹配不上,则自动匹配下一个,匹配上为止。  
          i: 如果能匹配上则向上抛出成功,由调用方法的地方来处理
         ii: 如果所有的都匹配不上,则抛出失败,由jvm默认处理

ex:

public class Demo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			getResult();
			System.out.println("try......");
		} catch (ArithmeticException e) {
			// TODO: handle exception
			System.out.println("catch......");
		}
		
	}
	public static void getResult() throws ArithmeticException{  //把创建的异常对象抛给调用此方法的地方
		System.out.println(1/0);  //创建一个ArithmeticException类型的异常对象
		System.out.println("========"); //如果上一行代码创建了异常对象并向上抛出了。此行代码不会执行
	}
}

运行结果图:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐