throw 和 throws

  • 1 throw
  • 2 throws
  • 3 区别

1 throw

  1. throw关键字,用于主动地抛出异常;
  2. 正常情况下,当除数为0的时候,程序会主动抛出ArithmeticException
  3. 当时如果我们想要除数为1的时候也抛出ArithmeticException异常,就可以使用throw关键字主动地抛出异常。
throw new Exception_class("异常类错误信息!");

语法也非常简单,throw 关键字后跟上 new 关键字,以及异常的类型还有参数即可。

public class ThrowDemo {static void checkEligibilty(int stuage){if(stuage<18) {throw new ArithmeticException("禁止年纪未满 18 岁观看此电影");} else {System.out.println("请认真观影!!");}}public static void main(String args[]){checkEligibilty(10);System.out.println("愉快地周末..");}
}

这段代码在运行的时候就会抛出以下错误:

Exception in thread "main" java.lang.ArithmeticException: 禁止年纪未满 18 岁观看此电影

2 throws

  1. throws关键字的作用就和throw完全不同。用于在类的方法中抛出异常,当在方法中不想用try-catch括住异常的时候,可以通过在方法签名上声明throws向上抛出异常。
  2. 假设现在有这么一个方法 myMethod(),可能会出现 ArithmeticException 异常,也可能会出现 NullPointerException。这种情况下,可以使用 try-catch 来处理。
  3. try-catchthrows的使用应该由调用函数来确定的,如果异常需要让调用者知道,并由调用者捕获处理的话,就应该向上抛出。如果调用者不需要捕获,则直接try-catch显式抛出异常。
public void myMethod() {try {// 可能抛出异常 } catch (ArithmeticException e) {// 算术异常} catch (NullPointerException e) {// 空指针异常}
}

但假设有好几个类似 myMethod() 的方法,如果为每个方法都加上 try-catch,就会显得非常繁琐。代码就会变得又臭又长,可读性就差了。

一个解决办法就是,使用 throws 关键字,在方法签名上声明可能会抛出的异常,然后在调用该方法的地方使用 try-catch 进行处理。

public static void main(String args[]){try {myMethod1();} catch (ArithmeticException e) {// 算术异常} catch (NullPointerException e) {// 空指针异常}
}
public static void myMethod1() throws ArithmeticException, NullPointerException{// 方法签名上声明异常
}

3 区别

  1. throws关键字用于声明异常(向上抛出异常,交给其调用方法来处理),他的作用和try-catch相似;而throw关键字用于显式抛出异常。
  2. throws关键字后面跟的是异常的名字;而throw关键字后面跟的是异常的对象。
throws ArithmeticException;
throw new ArithmeticException("算术异常");
  1. throws关键字出现在方法的签名上的后面,而throw关键字出现在方法体里。
  2. throws关键字在声明异常的时候可以跟多个异常,只需要用逗号隔开即可;而throw关键字每次只能抛出一个异常。

参考:https://mp.weixin.qq.com/s/a7skXnb-C21GZuxL3j1MoQ

throw 和 throws相关推荐

  1. 【Java挠头】Java异常、捕获、处理、throw、throws等绝妙剖析

    –本文摘要–     1.本文的目标读者:是接触过Java异常,但是仅限于书本和一些例题,某一天写着写着会突然觉得"'异常'没什么意义,Java不是已经帮我们处理了嘛?"的这些朋友 ...

  2. Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

    Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 参考文章: (1)Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 (2)https://ww ...

  3. 异常机制及throw与throws的区别 (z)

    Java的异常处理 Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally.JB的在线帮助中对这几个关键字是这样解释的:         Throws ...

  4. java中int和integer的区别_Java异常中throw和throws关键字的区别

    Java中常常弄混的两个关键字,throw和throws,它们有什么区别呢?如何记忆他们,而不至于出错呢? throw和throws 区别 throws:出现在方法的签名中,声明当前方法可能抛出的所有 ...

  5. java throw 接口_Java基础系列-throw、throws关键字

    一.概述 throw和throws就是异常相关的关键字,在java中异常机制是一个非常重要的机制,我们需要重点掌握. 既然说到了异常,简单描述下异常机制很有必要,这也对后文的讲述提供前提. 二.Jav ...

  6. 面向对象回顾(异常(try、catch、throw、throws和finally)、接口和抽象类、面向对象特征、泛型(extends/super))

    1. 异常 1.1 JAVA语言如何进行异常处理 Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口. 在Java中,每个异常都是一个对象,它是Throwable类 ...

  7. Java异常之try,catch,finally,throw,throws

    Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...

  8. java的throw_浅谈Java的throw与throws

    浅谈Java异常 以前虽然知道一些异常的处理,也用过一些,但是对throw和throws区别还是有不太清楚.今天用实例测试一下 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被 ...

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

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

  10. 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)

    多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...

最新文章

  1. IDEA新建springboot项目发生错误
  2. 【Nginx】错误: [emerg] “proxy_pass“ cannot have URI part in location given by regular expression,...
  3. 创建一个Java :: Geci生成器
  4. 在mysql数据库中,多表查询,事务,DCL,
  5. WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
  6. AndroidVector初探
  7. zabbix 接触这段时间的感悟
  8. count是java关键字吗_countinue关键字和break关键字与java基本格式
  9. 计算机网络布线总结,网络综合布线实训总结
  10. 清华山维eps软件_6款倾斜摄影裸眼3D采集软件 | 推荐给大家
  11. Mysql 创建数据库\添加用户\用户授权
  12. tp5html的if判断,TP5 判断方法
  13. 【第 001 期 · 文献领读】——MRI专题
  14. 七、vertical-align属性、透明度属性及兼容、ps常用工具、常见的图片格式、项目规范、命名参考、iconfont的使用...
  15. 常见格式浏览器在线预览
  16. scratch变量讲解1
  17. 熬夜肝了这一份C++开发详细学习路线
  18. 常见外挂分类及原理概述
  19. linux启动和服务管理(6)systemd启动过程
  20. 2022年全球市场数控超声波焊接机总体规模、主要生产商、主要地区、产品和应用细分研究报告

热门文章

  1. sql2008属于mysql吗_SQL Server 2008 属于( )数据库系统。
  2. Obsidian 插件(二):Advanced_Slides 的使用
  3. GWAS理论 1-4 关联分析模型和常用软件介绍
  4. 密码打马赛克已经不安全了!这款开源的去“马赛克“工具一秒还原
  5. 【19调剂】其它调剂信息(计算机/软件专业)【3.56】
  6. 计算机网络学习笔记(三)——网络核心、接入网与物理媒体
  7. ceph 分布式文件存储部署
  8. Python高效实现滑块验证码自动操纵
  9. 基于单片机的CO浓度检测及报警系统设计(电路+程序流程)
  10. DVWA [CSRF] 跨站请求伪造