Java中throw和throws的区别

如题所述

1.throws 用于抛出方法层次的异常, 并且直接由些方法调用异常处理类来处理该异常, 
所以它常用在方法的后面。比如 
public static void main(String[] args) throws SQLException


2.throw 用于方法块里面的代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常, 但它不会处理它, 而是由方法块的throws Exception来调用异常处理类来处理。


throw用在程序中,明确表示这里抛出一个异常。   
throws用在方法声明的地方,表示这个方法可能会抛出某异常。


throw是抛出一个具体的异常类,产生一个异常。
throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。



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("程序发生了其他的异常");
                 //输出提示信息
 }
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-12-26

java中throw和throws的区别



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");
}


throw:
String s = "abc";
if (s.equals("abc")) {
throw new NumberFormatException();
} else {
System.out.println(s);
}

如果对编程感兴趣可以来我这个看看,希望对您有所帮助!~

java中的“throw”和“throws”的区别?
throw和throws的区别:1、throw代表动作,表示抛出一个异常的动作;throws代表一种状态,代表方法可能有异常抛出 2、throw用在方法实现中,而throws用在方法声明中 3、throw只能用于抛出一种异常,而throws可以抛出多个异常

Java中throws和throw的区别讲解
1、throw语句用在方法体内,表示抛出异常,由方法体内的语句处理;throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。2、throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常;throw是具体向外抛异常的动作,所以它是抛出一个异常实例。3、throws说明有那个可...

Java中throw和throws的区别
1.throw:(针对对象的做法)抛出一个异常,可以是系统定义的,也可以是自己定义的。下面举两个例子:抛出Java中的一个系统异常:public class One { public void yichang(){ NumberFormatException e = new NumberFormatException();throw e;} public static void main(String[] args){ One test = ...

在java中,throw与throws有什么区别
1、throw是在代码块内的,即在捕获方法内的异常并抛出时用的;2、throws是针对方法的,即将方法的异常信息抛出去 3、可以理解为throw是主动(在方法内容里我们是主动捕获并throw的),而throws是被动(在方法上是没有捕获异常进行处理,直接throws的)4、例子:public void str2int(String str) throws ...

Java中,throw和throws有什么区别?
通过throws关键字声明可能抛出的IOException,使调用者在调用方法前做好异常处理准备。总之,throw与throws之间的主要区别在于功能和适用场景。throw用于实际抛出异常的代码段,而throws用于方法签名中声明可能抛出的异常类型,以通知调用者它们需要进行相应的异常处理。

JAVA的throw和throws怎么用!
在Java中,"throw"和"throws"是两个关键的异常处理关键字。"throw"用于在代码中实际抛出一个异常,语法形式是"throw(异常对象)"。它是在方法体内执行,当遇到需要中断正常流程的情况时,用来主动引发异常。"throws"则是在方法声明时使用,用来标记该方法可能抛出的异常,为的是让调用者知道这个方法在执行...

java中throw和throws的区别
并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。1.1 throw...

throw和throws的区别
理解`throw`和`throws`的区别对于掌握Java异常处理至关重要。`throw`与`throws`之间的区别在于它们的用途和表达方式。`throw`用于明确表示当前方法或函数内部发生异常的情况,它描述了实际发生的事件。例如:`Don't throw it to him, give it to him!别扔给他,递给他!``Can you throw me that ...

JAVA培训:throw 和 throws 的区别?
Java 异常处理中的 throw 和 throws 关键字,它们在功能和使用场景上有明显区别。throw 用于方法内部,主动抛出异常对象,通常在方法中执行时可能遇到错误情况,通过 throw 关键字将异常对象抛出至调用者。使用格式为:throw 异常对象。例如,若需抛出异常对象 e,可通过 throw 语句实现,示例代码如下:而 ...

Java中throw和throws的区别
throw,用在函数体中,用于抛出一个异常对象。throws用在函数名的后面,是函数签名的一部分,表示将函数内部抛出的异常抛给函数调用栈的上一级函数。

相似回答