编译异常和异常处理

221 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

编译异常

介绍

编译异常是指在编译期间,就必须处理的异常,否则代码不能通过编译

常见的编译异常

1)SQLException //操作数据库时,查询表可能发生异常

2)IOException //操作文件时,发生的异常

3)FileNotFoundException //当操作一个不存在的文件时,发生异常

4)ClassNotFoundException //加载类,而该类不存在时,出现异常

5)EOFException //操作文件,到文件末尾,发生异常

6)IllegalmentException //参数异常

import java.io.FileInputStream; 
import java.io.IOException; 
public class Exception02 { 
    public static void main(String[] args) { 
        try {
        FileInputStream fis; 
        fis = new FileInputStream("d:\\aa.jpg"); 
        int len; while ((len = fis.read()) != -1) { 
        System.out.println(len); 
        } fis.close(); 
        } catch (IOException e) { 
        e.printStackTrace(); 
        } 
    } 
}

异常处理

介绍

异常处理就是当异常发生时,对异常处理的方式。

异常处理的方式

(1)try-catch-finally

在代码中捕获发生的异常,自行处理。

(2)throws

将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM。

try-catch 异常处理

说明

(1)Java提供try和catch块来处理异常,try块用于包含可能出错的代码,catch块用于处理try块中发生

的异常。可以根据需求在程序中创建多个try-catch块。

(2)基本语法

try{
    //可疑代码
    //将异常发生成对应的异常对象,传递给catch块
}catch(异常){
    //对异常的处理
    }
    //如果没有finally,语法是可以通过的
   

try-catch 方式处理异常-快速入门

代码:

public static void main(String[] args) {
    int num1 = 10; 
    int num2 = 0; 
    try { 
    int res = num1 / num2; 
    } catch (Exception e) { 
    System.out.println(e.getMessage()); 
    } 
}

try-catch 方式处理异常-注意事项

(1)如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块

(2)如果异常没有发生,则顺序执行try的代码块,不会进入到catch

(3)如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等)则使用如下代码

    try { 
    int a = Integer.parselnt(str);
    System.out.println("数字" + a);
    } catch (Exception e) { 
    e.printStackTrace();
    } finally {
    System.out.println("不管是否发生异常,都始终执行代码"); 
    } 
}

代码:

public class TryCatchDetail { 
    public static void main(String[] args) { 
    //ctrl + atl + t 
    //1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到 catch 块 
    //2. 如果异常没有发生,则顺序执行 try 的代码块,不会进入到 catch 
    //3. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等)则使用如下代码- finally       try { 
    String str = "周小末"; 
    int a = Integer.parseInt(str);
    System.out.println("数字:" + a); 
    } catch (NumberFormatException e) { 
    System.out.println("异常信息=" + e.getMessage()); 
    } finally { 
    System.out.println("finally 代码块被执行..."); 
    } 
    System.out.println("程序继续..."); 
    } 
}