java异常和throw和throws的区别
之前在编程中编译完成后,运行时,会遇见一些常见的错误,如NullPointerException,ArrayIndexOutOfBoundsException等等
在今天重新回顾学习了java异常,总结了一些异常的学习,和大家一起分享一下!!!
java中异常处理是通过:try、catch、finally、throw和throws这5个关键词来实现的
简单介绍一下:try、catch、finally 3个关键词,java处理异常中,把可能出现的异常代码放入到try块中,由catch来进行捕获异常,而将必须输出的信息,放到的final语句中,因为是否发生异常final中的语句都会输出,除非在catch中使用System.exit(1)。 注:执行System.exit(1),将推出jvm虚拟机
好的,介绍了一下try、catch、finally 3个关键词,接下来说一下throw和throws!!
声明异常——throws
java中通过关键词throws声明某个方法可能抛出的各种异常类,可以同时声明多个异常类,但需用逗号隔开。
有两种方式进行处理throws:
1.使用try-catch捕获异常
2.使用throws继续声明,如果调用者不打算处理此异常,可以继续通过throws声明异常,让上一级调用者处理异常。main()方法声明的异常将由Java虚拟机来处理
下面通过两个小Demo给大家看一下:
处理方式throws1:
import java.util.Scanner;
public class DemoOneTest {
/**
* 通过try—catch捕获并处理异常
* @param args
*/
public static void main(String[] args){
try {
divide();
} catch (Exception e) {
System.err.println("error:被除数和除数不能为零!!!");;
e.printStackTrace();
}
}
/**
* throws进行异常的声名
* @throws Exception
*/
public static void divide() throws Exception{
Scanner input = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = input.nextInt();
System.out.println("请输入除数:");
int num2 = input.nextInt();
System.out.println(num1/num2);
}
}
输出结果:错误

输出结果:正确

处理方式throws2:
import java.util.Scanner;
public class DemoOneTest {
/**
* 通过throws继续声明异常
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
divide();
}
/**
* throws进行异常的声名
* @throws Exception
*/
public static void divide() throws Exception{
Scanner input = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = input.nextInt();
System.out.println("请输入除数:");
int num2 = input.nextInt();
System.out.println(num1/num2);
}
}
输出结果:正确

输出结果:错误

抛出异常——throw
java中也可以使用throw关键词,来进行自行抛出异常,来处理系统无法自动发现并解决的问题,将它由调用者来进行决解
Demo
Me.class
/**
* 使用throw在方法内抛出异常
*/
public class Me {
private int age = 0; /**
* 设置年龄
* @param age
*/
public void setAge(int age) throws Exception {
if (age >= 0 && age <= 100) {
this.age = age;
}else{
throw new Exception("年龄必须在1到100之间");
}
} public int getAge(){
this.age = age;
return age;
} /**
* 信息
*/
public void print(){
System.out.println("年龄为:"+this.age);
}
} DemoTwoTest.class
/**
* 捕获throw抛出的异常
*/
public class DemoTwoTest {
public static void main(String[] args) {
Me me = new Me();
try {
me.setAge(99);
} catch (Exception e) {
e.printStackTrace();
}
me.print();
}
} 输出结果:正确
me.setAge(99);

输入结果:错误
me.setAge(101);

以上是throw和throws的使用和示例代码,接下来说一下throw和throws的区别:
1.作用不同:throw用于在程序中抛出异常
throws用于声明在该方法内抛出了异常
2.使用位置不同:throw位于方法体内部,用于单独语句使用
throws需要跟在方法参数列表后面,不能单独使用
3.内容不同:throw抛出一个异常对象,且只能有一个
throws后面跟异常类,且可以跟多个异常类
异常的分类:
Throwable类:所有异常类型都是Throwable类的子类,它有两个派生类,分别是Error和Exception
Error类:表示仅靠程序本身无法恢复的严重错误,如内存溢出、虚拟机错误。应用程序不应该抛出这种类型的对象(一般由虚拟机抛出)
Exception类:由java应用程序抛出和处理的非重要错误,如数组下标越界、类型转换等。它的不同的子类分别对应不用类型的异样
java异常和throw和throws的区别的更多相关文章
- java异常中throw和throws的区别
throws和throwthrows:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁. 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表 ...
- Java中的throw和throws的区别
Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...
- Java的异常处理throw和throws的区别
区别一: throw 是语句抛出一个异常:throws 是方法抛出一个异常: throw语法:throw <异常对象> ...
- Java中关键字throw和throws的区别
==========================================题外话===================================================== 今 ...
- java中的throw与throws的区别
什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...
- java异常处理的throw和throws的区别
1. 区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是指抛出的一个具体的异常类型. 2.分别介绍 ...
- JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别
JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...
- Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型. 从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是 ...
- Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)
Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)
随机推荐
- Object.prototype.toString.call(obj).slice(8,-1)
1.Object.prototype.toString() 该方法返回描述某个对象数据类型的字符串,如自定义的对象没有被覆盖,则会返回“[object type]”,其中,type则是实际的对象类型. ...
- string判断是否是正常的ip格式
废话不多说,上代码 bool isCurrectIP(char *ip) { if (ip == NULL) { return false; } char temp[4]; int count = 0 ...
- Idea mac
Idea 的破解 http://idea.lanyus.com/ Idea 的常用配置 模版及模版的使用 创建 JavaWeb 或 Module 关联数据库 版本控制 断点调试 配置 maven 其他 ...
- Git教程 - 远程仓库
到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...
- Ubuntu14 定时查询任务进程存活状态以及定时杀死进程和重启
#!/bin/bash while true do pkill -f "savePic.py" python ./savePic.py & #fi sleep 3600 d ...
- Kintinuous解析
版权声明:本文为博主原创文章,未经博主允许不得转载. Kintinuous是Thomas Whelan在National University of Ireland Maynooth读博期间的工作,有 ...
- npm参考手册
一 权限操作 npm允许通过scope组织私有包,通过team细化权限控制 npm官方仓储有两种类型的包,普通包和scope包 普通包特征: - 只能公有,谁都可以下载使用 - 仅可以通过所有者(ow ...
- 64位WIN7 配置IIS遇到问题
App_global.asax.sr8_llzl.dll' -- '拒绝访问. 设置c:windows\temp 目录访问权限 temp--> 属性-->安全-- > 添加IIS_I ...
- 吴裕雄--天生自然HTML学习笔记:HTML <head>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【GBK、UTF-8、ISO8859-1】三种编码方式总结及实例
感谢:https://blog.csdn.net/youngstar70/article/details/64117297 一.总结 在Java中,String的getBytes()方法是得到一个操作 ...