开发者

Java中的throws异常处理及使用细节

目录
  • 一. throw关键字:
  • 二. throws关键字:
  • 三. 区别与联系:
  • Java的throws异常处理

一. throw关键字:

1.作用:

   throw关键字用于在程序中手动抛出一个异常。当异常发生时,程序会中断当前的执行流程,并将异常信息传递给上层的异常处理机制。

2.使用场景:

  (a)当我们发现某些条件不符合业务逻辑要求时,我们可以使用throw关键字抛出一个异常。

  (b)当我们在定义自己的异常类时,可以通过throw关键字主动抛出这个自定义的异常对象。

3.代码示例:

public void checkAge(int age) {
   if (age < 0) {
     throw new IllegalArgumentException("年龄不能为负数");
   }
}

二. throws关键字:

1.作用:

  throws关键字用于指定方法可能抛出的异常。它标识了哪些异常可以传递FgQPeKOQP到方法的调用者,需要调用者进行相应的处理。

2.使用场景:

  (a)当方法内部的代码可能会引发异常时,可以使用throws关键字声明这些异常。

  (b)当我们不希望在当前方法中捕获异常,并且希望将异常传递给上层调用者来处理时,可以使用throws关键字。

3.代码示例:

public void readFile() throws IOException {
   // 异常处理逻辑
}

三. 区别与联系:

throw关键字是用于在方法内抛出异常,而throws关键字是在方法声明中指定可能抛出的异常。

Java的throws异常处理

基本介绍:

1)如果一个方法(中的执行语句)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示的声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理

2)在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类

package com.exception_;
import java.io.FileInputStream;
import java.io.FipythonleNotFoundException;
public class Throws01 {
    public static void main(String[] args) {
    }
    public void f1() throws FileNotFoundException,NullPointerException,ArithmeticException{ //也可以写throws Exception
        //javascript创建了一个文件流对象
        //解读:
        //这里的异常是一个FileNotFoundException 编译异常,必须对其处理
        //使用try-catch-finally处理
        //或使用throws抛出异常,让调用f1()的调用者来处理
        //throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类(如Exception,Error(基类)和它的父类)
        //throws 关键字后也可以是 异常列表,即可以抛出多个异常
        FileInputStream fis = new FileInputStream("d://aa.txt");
    }
}

注意事项和使用细节:

1)对于编译异常,程序中必须处理,比如try-catch或throws

2)对于运行时异常,程序中如果没有处理,默认就是throws的方式

3)子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型

4)在throws过程中,如果有方法try-catch,就相当于处理异常,就可以不必throws

package com.exception_;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class ThrowsDetails {
    public static void main(String[] args) {
    }
    public void f2() /*throws ArithmeticException 把异常抛给调用者,默认不写也有*/
    {
        int n1 = 10;
        int n2 = 0;
        double res = n1/n2;
    }
    public void f1() throws FileNotFoundException{
        f3();//当f1()不去throws时,这个语句会报错
        //解读:
        //1.因为f3() 方法抛出的是一个编译异常
        //2.即这时,就要求f1() 必须处理这个异常(tr编程客栈y-catch或继续throws)
    }
    public void f3() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("d://aa.txt");
    }
    public static void f4()FgQPeKOQP{
        f5();//这里直接调用f5不会报错
        //解读:
        //f5抛出的是一个运行异常
        //java中并不要求程序员显示处理,因为有默认处理机制
    }
    public static void f5() throws ArithmeticException{
    }
}
class Father{//父类
    public void method() throws RuntimeException{
    }
}
class Son extends Father{//子类
//子类重写父类的方法时,对抛出异常的规定:
//子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型
    @Override
    public void method() throws NullPointerException{//子类抛出的类型必须是它父类抛出类型的子类
        super.method();
    }
}

到此这篇关于Java中的throws异常处理及使用细节的文章就介绍到这了,更多相关java throws异常内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜