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 = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
抛出一个自定义的异常:

public class People {
public static int check(String strage) throws MyException{
int age = Integer.parseInt(strage);
if(age < 0){
throw new MyException("年龄不能为负数!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
System.out.println(myage);
}catch(NumberFormatException e){
System.out.println("数据格式错误");
System.out.println("原因:" + e.getMessage());
}catch(MyException e){
System.out.println("数据逻辑错误");
System.out.println("原因:" + e.getMessage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
this.name = name;
}
public String getMessage(){
return this.name;
}
}
2.throws:(针对一个方法抛出的异常)
抛出一个异常,可以是系统定义的,也可以是自己定义的。
抛出java中的一个系统异常:
public class One {
public void yichang() throws NumberFormatException{
int a = Integer.parseInt("10L");
}
public static void main(String[] args){
One test = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
抛出一个自定义异常:
public class People {
public static int check(String strage) throws MyException{
int age = Integer.parseInt(strage);
if(age < 0){
throw new MyException("年龄不能为负数!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
System.out.println(myage);
}catch(NumberFormatException e){
System.out.println("数据格式错误");
System.out.println("原因:" + e.getMessage());
}catch(MyException e){
System.out.println("数据逻辑错误");
System.out.println("原因:" + e.getMessage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
this.name = name;
}
public String getMessage(){
return this.name;
}
}
3.那么下面我要说究竟什么时候用哪种:
如果是系统异常的话可以什么都不用做,也可以针对方法抛出一个异常,因为系统异常是可以被系统自动捕获的,所以这个异常究竟是要在方法内部解决还是交给上层函数去解决其实效果是一样的。但是我查了很多资料,即使会抛出异常能被系统所捕获的话还是建议针对方法写一个throws,因为这样在完成一个大型任务的时候可以让别的程序员知道这里会出现什么异常。
如果是自己定义的异常,则必须要用throws抛出该方法可能抛出的异常,否则编译会报错。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-09-15

throw是用来抛出异常,throws是声明这个方法要抛出

比如说

class A{
    public static void main(String[] args){
        try{
            a();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    static a() throws NullPointerException{
        throw new NullPointerException();
    }
}

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

在java中,throw与throws有什么区别
1、throw是在代码块内的,即在捕获方法内的异常并抛出时用的;2、throws是针对方法的,即将方法的异常信息抛出去 3、可以理解为throw是主动(在方法内容里我们是主动捕获并throw的),而throws是被动(在方法上是没有捕获异常进行处理,直接throws的)4、例子:public void str2int(String str) 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有什么区别?
通过throws关键字声明可能抛出的IOException,使调用者在调用方法前做好异常处理准备。总之,throw与throws之间的主要区别在于功能和适用场景。throw用于实际抛出异常的代码段,而throws用于方法签名中声明可能抛出的异常类型,以通知调用者它们需要进行相应的异常处理。

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

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

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

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 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。1.1 throw...

相似回答