throw 和 throws
throw 和 throws
- 1 throw
- 2 throws
- 3 区别
1 throw
throw
关键字,用于主动地抛出异常;- 正常情况下,当除数为0的时候,程序会主动抛出
ArithmeticException
; - 当时如果我们想要除数为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
throws
关键字的作用就和throw
完全不同。用于在类的方法中抛出异常,当在方法中不想用try-catch括住异常的时候,可以通过在方法签名上声明throws
向上抛出异常。- 假设现在有这么一个方法
myMethod()
,可能会出现ArithmeticException
异常,也可能会出现NullPointerException
。这种情况下,可以使用try-catch
来处理。 try-catch
与throws
的使用应该由调用函数来确定的,如果异常需要让调用者知道,并由调用者捕获处理的话,就应该向上抛出。如果调用者不需要捕获,则直接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 区别
throws
关键字用于声明异常(向上抛出异常,交给其调用方法来处理),他的作用和try-catch相似;而throw
关键字用于显式抛出异常。throws
关键字后面跟的是异常的名字;而throw
关键字后面跟的是异常的对象。
throws ArithmeticException;
throw new ArithmeticException("算术异常");
throws
关键字出现在方法的签名上的后面,而throw
关键字出现在方法体里。throws
关键字在声明异常的时候可以跟多个异常,只需要用逗号隔开即可;而throw
关键字每次只能抛出一个异常。
参考:https://mp.weixin.qq.com/s/a7skXnb-C21GZuxL3j1MoQ
throw 和 throws相关推荐
- 【Java挠头】Java异常、捕获、处理、throw、throws等绝妙剖析
–本文摘要– 1.本文的目标读者:是接触过Java异常,但是仅限于书本和一些例题,某一天写着写着会突然觉得"'异常'没什么意义,Java不是已经帮我们处理了嘛?"的这些朋友 ...
- Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 参考文章: (1)Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 (2)https://ww ...
- 异常机制及throw与throws的区别 (z)
Java的异常处理 Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally.JB的在线帮助中对这几个关键字是这样解释的: Throws ...
- java中int和integer的区别_Java异常中throw和throws关键字的区别
Java中常常弄混的两个关键字,throw和throws,它们有什么区别呢?如何记忆他们,而不至于出错呢? throw和throws 区别 throws:出现在方法的签名中,声明当前方法可能抛出的所有 ...
- java throw 接口_Java基础系列-throw、throws关键字
一.概述 throw和throws就是异常相关的关键字,在java中异常机制是一个非常重要的机制,我们需要重点掌握. 既然说到了异常,简单描述下异常机制很有必要,这也对后文的讲述提供前提. 二.Jav ...
- 面向对象回顾(异常(try、catch、throw、throws和finally)、接口和抽象类、面向对象特征、泛型(extends/super))
1. 异常 1.1 JAVA语言如何进行异常处理 Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口. 在Java中,每个异常都是一个对象,它是Throwable类 ...
- Java异常之try,catch,finally,throw,throws
Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...
- java的throw_浅谈Java的throw与throws
浅谈Java异常 以前虽然知道一些异常的处理,也用过一些,但是对throw和throws区别还是有不太清楚.今天用实例测试一下 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被 ...
- java throw与throws_基于Java中throw和throws的区别(详解)
系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...
- 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)
多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...
最新文章
- IDEA新建springboot项目发生错误
- 【Nginx】错误: [emerg] “proxy_pass“ cannot have URI part in location given by regular expression,...
- 创建一个Java :: Geci生成器
- 在mysql数据库中,多表查询,事务,DCL,
- WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
- AndroidVector初探
- zabbix 接触这段时间的感悟
- count是java关键字吗_countinue关键字和break关键字与java基本格式
- 计算机网络布线总结,网络综合布线实训总结
- 清华山维eps软件_6款倾斜摄影裸眼3D采集软件 | 推荐给大家
- Mysql 创建数据库\添加用户\用户授权
- tp5html的if判断,TP5 判断方法
- 【第 001 期 · 文献领读】——MRI专题
- 七、vertical-align属性、透明度属性及兼容、ps常用工具、常见的图片格式、项目规范、命名参考、iconfont的使用...
- 常见格式浏览器在线预览
- scratch变量讲解1
- 熬夜肝了这一份C++开发详细学习路线
- 常见外挂分类及原理概述
- linux启动和服务管理(6)systemd启动过程
- 2022年全球市场数控超声波焊接机总体规模、主要生产商、主要地区、产品和应用细分研究报告
热门文章
- sql2008属于mysql吗_SQL Server 2008 属于( )数据库系统。
- Obsidian 插件(二):Advanced_Slides 的使用
- GWAS理论 1-4 关联分析模型和常用软件介绍
- 密码打马赛克已经不安全了!这款开源的去“马赛克“工具一秒还原
- 【19调剂】其它调剂信息(计算机/软件专业)【3.56】
- 计算机网络学习笔记(三)——网络核心、接入网与物理媒体
- ceph 分布式文件存储部署
- Python高效实现滑块验证码自动操纵
- 基于单片机的CO浓度检测及报警系统设计(电路+程序流程)
- DVWA [CSRF] 跨站请求伪造