抛出异常有三种形式

  • throw
  • throws
  • 系统自动抛异常

一、系统自动抛异常

当程序语句出现一些逻辑错误、主义错误或类型转换错误时,系统会自动抛出异常:(举个栗子)

public static void main(String[] args) { int a = 5, b =0; System.out.println(5/b);   // 此处系统会自动抛出ArithmeticException异常//function();
}

二、throw

throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常

public static void main(String[] args) { String s = "abc"; if(s.equals("abc")) { throw new NumberFormatException(); } else { System.out.println(s); } //function();
}

运行时,系统会抛出如下异常:

Exception in thread "main" java.lang.NumberFormatException at......

三、throws

当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理

public class testThrows(){
public static void function() throws NumberFormatException { String s = "abc"; System.out.println(Double.parseDouble(s));
} public static void main(String[] args) { try { function(); } catch (NumberFormatException e) { System.err.println("非数据类型不能强制类型转换。"); //e.printStackTrace(); }
}

运行结果如下:

非数据类型不能强制类型转换。

四、throw与throws的比较

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

五、编程习惯:

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

Java中关键字throw和throws的区别相关推荐

  1. 简要解析Java中的throw和throws关键字

    解析Java中的throw和throws关键字 1 throws关键字 1.1 作用 向上抛异常,把异常交给调用处处理,实际上自身并没有处理异常. 1.2 原理 一旦方法体出现异常,仍会在异常代码出生 ...

  2. java异常处理的throw和throws的区别

    1. 区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是指抛出的一个具体的异常类型. 2.分别介绍 ...

  3. java的throw不常用吗_java中的throw与throws的区别

    什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...

  4. java中的throw和throws区别

    1.throws throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.如下面例子所示: pu ...

  5. java svb_Java关键字throw和throws

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常 语句抛出的异常 用户程序自定义的异常和应用程序特定的异常,必须借助于throws 和throw 语句来定义抛出异常. ...

  6. Java异常:throw 和 throws的区别

    throws:用来声明一个方法可能抛出和所有异常的信息,表现出现异常的可能性,但并不一定会发生异常.(可以理解为为了预防异常的出现,而用throws提前声明一下) throw:指抛出的一个具体的异常类 ...

  7. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  8. throws java_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  9. java里throws详细讲解,基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

最新文章

  1. 设置commit 提交模板
  2. SPIEC-EASI的微生物网络构建示例
  3. linux内核单独安装,Linux内核编译与安装
  4. 【CV】深度了解自监督学习,就看这篇解读 !SimMIM:掩码图像建模的简单框架...
  5. 量产之后计算机读不出u盘,求大神、我量产没成功然后U盘就电脑上就不显示了...
  6. 求首位相连一维数组最大子数组的和
  7. vuex 数据初始化问题
  8. 分享一下自己写的PHP函数
  9. word实现多级自动编号
  10. 电力拖动系统课程问题汇总(答案)
  11. 房地产开发如何选择最佳招标采购策略
  12. 计算机病毒鼻祖拟推新型搜索技术挑战谷歌,美科学家将推新型搜索引擎挑战谷歌...
  13. 计算机控制技术结束语,电子商务在线 - 计算机控制技术教学改革探索与实践
  14. SVC vs SVR
  15. Android 学习笔记(6)之Lambda和注解
  16. 随机矩阵 stochastic matrix
  17. 试算平衡表示例图_试算平衡表的编制步骤是什么?
  18. cp7s2装Linux,基礎級拆機-神舟戰神GX8CP5s1上8700發現較為雞肋-仿CP7s2
  19. 此去经年如梦,更与何人说?
  20. 2017AP计算机科学5分线,2017各国际学校AP分数大比拼,看看你是啥水平

热门文章

  1. AR”将会成为“更加日常化的移动设备应用的一部分”吗
  2. python_continue语句
  3. 使用delphi+intraweb进行微信开发4—微信消息加解密
  4. 使用coplot()绘制多元图
  5. tomcat启动时中文乱码
  6. milvus问答系统部署
  7. HCIE-Security Day44:AC产品概述、功能、架构组成、AC准入主要技术、RADIUS协议
  8. director.js:客户端的路由---简明中文教程
  9. Java打印杨辉三角形/帕斯卡三角形(含注释)
  10. dubbo学习篇1 注解之 @Reference 原理解析