Java异常1

异常:

1、异常不上编译错误,编译错误是运行之前就检查出的

2、异常是程序运行过程中出现不正常现象

异常的危害

1、从出现异常的语句开始,程序就中断了

2、提供异常的信息不友好

异常处理机制

为什么需要有异常的处理机制,

如果使用if......else来处理代码漏洞,这个不上一个长久之计

1、首先如果是使用if ......else会使代码非常臃肿

2、处理异常的代码和执行功能的代码在一起会十分混乱

3、不能堵住所有的漏洞

异常处理机制的方式

1、try......catch:

原理:

1、try语句块,:有可能出现异常的代码

2、catch语句块:如果异常被成功捕获了,处理异常的代码

3、如果出现异常,try语句块李出现异常的语句开始,try语句块之后的代码就不会执行

4、如果catch了异常,执行异常处理语句,执行完成后面程序不会中断,还会继续执行

5、如果没有catch住程序一样会执行

catch语句块

1、printStatchTrace();

2、getMessage();

System.out.print(e.getMessage());

3、System.err.println("自定义需要输出的错误信息")

4、System.out.println("自定义输出信息")

5、toString();

System.out.print(e);

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a,b,c;
try {
    System.out.println("请输入被除数");
    a=sc.nextInt();
    System.out.println("请输入除数");
    b=sc.nextInt();
    System.out.println("结果");
    c=a/b;
} catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    System.out.println("输出");
    System.err.println("格式不对");
    System.err.println(e);
    System.out.println("输出错误");
    System.out.println(e);
}

    }
}

2、异常处理机制,try后面跟多个catch语句块

try......catch......catch:

执行原理:从上到小依次匹配catch语句中的异常类型,执行第一个匹配到catch语句块,如果后面还有匹配的也不在执行,跳出try......catch结构执行后面的语句,如果能catch异常,就执行一条

catch语句的顺序,子类型放在前面,父类型放在后面

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a,b,c;
try {
    System.out.println("请输入被除数");
    a=sc.nextInt();
    System.out.println("请输入除数");
    b=sc.nextInt();
    System.out.println("结果");
    c=a/b;
    System.out.println(c);
} catch (InputMismatchException e) {
  System.out.println("输入的数据格式不对");
}catch(ArithmeticException e){
    System.out.println("除数不能是零");

}catch(Exception e){
    System.out.println("程序出现异常");
}

System.out.println("代码继续执行");

    }
}

3、异常处理机制:try......catch......finally

finally的执行结果:

1、没有异常:能执行

2、有异常,捕获到了:能执行

3、有异常,没捕获到:能执行

4、finally语句前如果有return,先执行finally在执行return

5、System.exit(1);退出虚拟机,只有这种情况,finally才不执行

finally语句一般是收尾语句,如关闭资源,断开连接等

java 复制代码
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a,b,c;
try {
    System.out.println("请输入被除数");
    a=sc.nextInt();
    System.out.println("请输入除数");
    b=sc.nextInt();
    System.out.println("结果");
    c=a/b;
    System.out.println(c);
} catch (InputMismatchException e) {
  System.out.println("输入的数据格式不对");
}catch(ArithmeticException e){
    System.out.println("除数不能是零");

}catch(Exception e){
    System.out.println("程序出现异常");
}finally{
    System.out.println("执行finally语句");
}

System.out.println("代码继续执行");

    }
}
相关推荐
豆沙沙包?9 分钟前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
军训猫猫头28 分钟前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
年老体衰按不动键盘34 分钟前
快速部署和启动Vue3项目
java·javascript·vue
咖啡啡不加糖39 分钟前
Redis大key产生、排查与优化实践
java·数据库·redis·后端·缓存
liuyang-neu43 分钟前
java内存模型JMM
java·开发语言
UFIT1 小时前
NoSQL之redis哨兵
java·前端·算法
刘 大 望1 小时前
数据库-联合查询(内连接外连接),子查询,合并查询
java·数据库·sql·mysql
怀旧,1 小时前
【数据结构】6. 时间与空间复杂度
java·数据结构·算法
大春儿的试验田2 小时前
Parameter ‘XXX‘ not found. Available parameters are [list, param1]
java
我很好我还能学2 小时前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++