throws java_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);

}

}

输出结果:错误

0c8911c245c7f67c046b77175947b320.png

输出结果:正确

4e310b36c54a9172633a1cdaadc5e323.png

处理方式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);

}

}

输出结果:正确

13d638392254de8a9fd427a5712e34e1.png

输出结果:错误

61a597d2d38bc27d2b65e4da9942fd73.png

抛出异常——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);

747eb0bbbe3e2924086ed34892ced0cb.png

输入结果:错误

me.setAge(101);

07bb824a5525d40bde3bf6353a62a19b.png

以上是throw和throws的使用和示例代码,接下来说一下throw和throws的区别:

1.作用不同:throw用于在程序中抛出异常

throws用于声明在该方法内抛出了异常

2.使用位置不同:throw位于方法体内部,用于单独语句使用

throws需要跟在方法参数列表后面,不能单独使用

3.内容不同:throw抛出一个异常对象,且只能有一个

throws后面跟异常类,且可以跟多个异常类

异常的分类:

Throwable类:所有异常类型都是Throwable类的子类,它有两个派生类,分别是Error和Exception

Error类:表示仅靠程序本身无法恢复的严重错误,如内存溢出、虚拟机错误。应用程序不应该抛出这种类型的对象(一般由虚拟机抛出)

Exception类:由java应用程序抛出和处理的非重要错误,如数组下标越界、类型转换等。它的不同的子类分别对应不用类型的异样

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值