异常

我们在编写程序的时候并不是每次都能完美运行,总会出现一些问题,也就是报错,本文主要讲的是运行是出现的错误。

Java中,运行时出现的错误被视为异常,而对应的就有异常处理机制
异常一般分为两种:Error:Java虚拟机无法解决的严重问题,一般不做处理。  Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。

下面是一些常见异常展示:

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class test {
    public static void main(String args[]) throws FileNotFoundException {
        /*
        int[] a = new int[1];
        a[1]=1;
        报错:java.lang.ArrayIndexOutOfBoundsException
        */
        
        /*
        int n  =Integer.parseInt("abc");
        System.out.println(n);
        报错:java.lang.NumberFormatException
        */
        
        /*    
        FileInputStream fis = new FileInputStream("a.txt");
        报错:java.io.FileNotFoundException: a.txt (系统找不到指定的文件。)
        */
        
    }
}
 

对于这些异常,我们或许会终止程序进行修正,但作为用户,我们更需要在程序出现异常时得到反馈。

try-catch-finally语句就能够满足我们的需求

try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。(try语句不能单独出现,需搭配catch或finally)

catch块:处理方法(catch可叠加)

finally:最终执行的代码,用于关闭和释放资源。(注:无论如何finally语句都会执行)

代码示例:

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class test {
    public static void main(String args[]) throws FileNotFoundException {
        /*
        try {
        int[] a = new int[1];
        a[1]=1;
        }catch(ArrayIndexOutOfBoundsException e) {
            System.out.println("下标越界");
        }
        输出:下标越界
        */
        
        /*
        try {    
        FileInputStream fis = new FileInputStream("a.txt");
        }catch(FileNotFoundException e) {
            System.out.println("找不到相应文件");
        }
        输出:找不到相应文件
        */
        try {
            int a= 0;
            System.out.println(a);
        }catch(Exception e) {
            System.out.println("catch语句");
        }finally {
            System.out.println("finally语句");
        }
        //0
        //finally语句
        
    }
}
 

try-catch-finally语句是捕获异常。

throws关键字则是抛出异常。仅仅是将函数中可能出现的异常向调用者声明,而自己则不具体处理。

public class test {
    public static void main(String args[]) throws NumberFormatException {

        try {
        int n  =Integer.parseInt("abc");
        System.out.println(n);
        }catch(NumberFormatException e){
            
        }
    }
}
 //运行时无输出

throw关键字是手动抛出异常。

public class test {
    public static void main(String args[]) throws NumberFormatException {

        try {
        int n  =Integer.parseInt("abc");
        System.out.println(n);
        }catch(NumberFormatException e){
            throw new NumberFormatException("出现异常");//throw
        }
    }
}

 

 

总结:

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常(开发过程中的语法错误和逻辑错误不是异常)。

对于异常,我们有捕获和抛出两种方法、

捕获异常使用try-catch-finally语句,抛出异常使用关键字throws

在抛出异常是我们也可以使用关键字throw手动抛出。需要注意的是,抛出异常是一种比较消极的方法,因为其并不对异常做出改正。

 

posted @ 2023-11-11 22:28  kandhera  阅读(37)  评论(0)    收藏  举报