Java语言中throw和throws的区别是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java语言中throw和throws的区别是啥?相关的知识,希望对你有一定的参考价值。
一、
throw关键字用于在代码中抛出一个异常,如:
throw new Exception("异常一");
下面是一个例子:
二、
throws关键字用来声明一个方法对其内部的代码可能抛出的异常不进行捕获,而是将异常抛出给方法的调用方,由调用方处理。因为java规定,对于方法中抛出的检查的异常,要么将其捕获,要么需在方法的头部用throws声明,抛给主调方。下面是一个例子:
参考技术A throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。throws语句用在方法声明后面,表示抛出异常,由该方法的调用者来处理。
throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常是,具体向外抛异常的动作,所以它是抛出一个异常实例。
throw与throws的比较
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
throws:
public static void write() throws FileNotFoundException
FileInputStream fileInputStream=new FileInputStream("c");
1
2
3
throw:
String s = "abc";
if (s.equals("abc"))
throw new NumberFormatException();
else
System.out.println(s);
参考技术B
1、作用不同:
throw用于程序员自行产生并抛出异常;
throws用于声明在该方法内抛出了异常
2、使用的位置不同:
throw位于方法体内部,可以作为单独语句使用;
throws必须跟在方法参数列表的后面,不能单独使用。
3、内容不同:
throw抛出一个异常对象,且只能是一个;
throws后面跟异常类,而且可以有多个。
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表啥意
throw 仅用于方法定义后面,指示该方法可能会抛出什么异常,使用该方法的方法必须处理该异常,或者再次抛出。throws 用于当程序判断发生异常时,用该语句抛出异常,或处理异常时再次抛出异常。
//下面三个关键字就是处理异常
try
//这里放可能会发生异常的语句
catch(Exception e)
//这里处理异常
finally
//这里的语句必然会得到执行,不管异常发省与否,
//用于关闭数据库,关闭连接等收尾操作(非必要)
java异常的一个简单例子,比如我有一个除法方法
public int divide(int a, int b)
return a / b;
但是这就有一个问题,当b是0时,程序会报错。
如果引入异常,改成这样
public int divide(int a, int b) throws Exception
if (b == 0)
throw new Exception("b = 0");
return a / b;
那么调用端该怎么用呢
public class ExceptionTest
public static void main(String[] args)
ExceptionTest et = new ExceptionTest();
try
System.out.println(et.divide(12, 0));
catch (Exception e)
System.out.println("0不能做被除数");
public int divide(int a, int b) throws Exception
if (b == 0)
throw new Exception("b = 0");
return a / b;
程序可以继续执行,不会中断。 参考技术A 1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示:
public class Shoot 创建类
static void pop() throws NegativeArraySizeException
//定义方法并抛出NegativeArraySizeException异常
int [] arr = new int[-3];//创建数组
public static void main(String[] args) //主方法
try
pop(); //调用pop()方法
catch (NegativeArraySizeException e)
System.out.println("pop()方法抛出的异常");//输出异常信息
2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。举例如下:
class MyException extends Exception //创建自定义异常类
String message; //定义String类型变量
public MyException(String ErrorMessagr) //父类方法
message = ErrorMessagr;
public String getMessage() //覆盖getMessage()方法
return message;
public class Captor //创建类
static int quotient(int x,int y) throws MyException//定义方法抛出异常
if(y < 0) //判断参数是否小于0
throw new MyException("除数不能是负数");//异常信息
return x/y;//返回值
public static void main(String args[]) //主方法
try //try语句包含可能发生异常的语句
int result = quotient(3,-1);//调用方法quotient()
catch (MyException e) //处理自定义异常
System.out.println(e.getMessage()); //输出异常信息
catch (ArithmeticException e)
//处理ArithmeticException异常
System.out.println("除数不能为0");//输出提示信息
catch (Exception e) //处理其他异常
System.out.println("程序发生了其他的异常");
//输出提示信息
参考技术B throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。
throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。
finally则是表示最后执行的,与try—catch连用,不管是否抛出异常,都会执行finally块的内容。 参考技术C (1)try、catch、fially
异常在Java中代表一个错误的实体对象,在特定错误发生时会丢出特定的异常对象,有些预期中可能发生的异常,编译器会提醒你先行处理,对于一些程序运行时所发生的执行时异常,你有机会捕捉这些异常,并尝试将程序恢复至正常运行状态。
在Java中如果想尝试捕捉异常,可以使用try、catch、finally 3个关键词组合的语法来达到目的。其语法基本结构如下:
try
//语句
catch(异常类型 名称)
//异常处理
finally
//一定会处理的区块
一个try语法所包括的区块,必须有对应的catch区块或finally区块。try区块可以搭配多个catch区块,如果设置了catch区块,则finally区块可有可无;如果没有定义catch区块,则一定要有finally区块。
(2)throw和throws
①当程序发生错误而无法处理时,会丢出对应的异常对象。除些之外,在某些时刻,你可能会想要自行丢出异常。若想要自行丢出异常,可以使用throw关键词,并生成指定的异常对象。例如:
throw new ArithmeticException();
下面给出一个例子:
public class ThrowDemo
public static void main(String[] args)
try
double data = 100 / 0.0;
System.out.println("浮点数除以零:"+data);
if(String.valueOf(data).equals("Infinity")
throw new ArithmeticException("除零异常");
catch(ArithmeticException e)
System.out.println(e);
执行结果如下:
浮点数除以零:Infinity
java.lang.ArithmeticException: 除零异常
②如果在方法中会有异常发生,而你并不想在方法中直接处理,而想要由调用方法的调用者来处理,则可以使用throws关键词来声明这个方法将会丢出异常。例如java.ioBufferedReader的readLine()方法就声明会丢出java.io.IOException。
可以这样使用throws来丢出异常:
private void someMethod(int[] arr) throws
ArrayIndexOutOfBoundsException,
ArithmeticException
//实现
以上是关于Java语言中throw和throws的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表啥意
JAVA语言如何进行异常处理,关键字throws,throw,try,catch,finally分别代表啥意义在try块中抛出异常吗