Java学习--异常

概念

程序运行过程中出现的不正常现象,出现异常不处理将终止程序运行。
异常处理的必要性∶任何程序都可能存在大量的未知问题、错误;如果不对这些问题进行正确处理,则可能导致程序的中断,造成不必要的损失。
异常处理:Java编程语言使用异常处理机制为程序提供了异常处理的能力。

异常分类

Throwable:可抛出的,一切错误或异常的父类,位于java.lang包中

  • Error: JVM、硬件、执行逻辑错误,不能手动处理
    • StackOverflowError 栈空间一处
    • OutOfMemoryError
  • Exception :程序运行和配置中产生的问题,可处理
    • RuntimeException:运行异常,可处理,可不处理
    • CheckedException:检查时异常,必须处理

public class Demo1 {
    public static void main(String[] args) {
         //常见的运行时异常
        String name=null;
        //Exception in thread "main" java.lang.NullPointerException
//        System.out.println(name.equals("asd"));
        int[] arr={10,20,30};
        //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
//        System.out.println(arr[3]);
        Object o="hello";
        //Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
//        Integer i=(Integer)o;
        //Exception in thread "main" java.lang.NumberFormatException: For input string: "100a"
//      int i=  Integer.parseInt("100a");
        //Exception in thread "main" java.lang.ArithmeticException: / by zero
      //  int n=10/0;
//        System.out.println(n);
        
    }
}

异常的产生

当程序在运行时遇到不符合规范的代码或结果时,会产生异常或程序员使用throw关键字手动抛出异常

异常的传递

按照方法的调用链反向传递,如始终没有处理异常,最终会有JVM进行默认异常处理(打印堆栈跟踪信息)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入第一个数字");
        int num=scanner.nextInt();
        System.out.println("请输入第二个数字");
        int num1=scanner.nextInt();
        try {
            System.out.println(num/num1);
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        System.out.println("测试");
    }
}

请输入第一个数字
1
请输入第二个数字
0
/ by zero
测试

finally块在jvm虚拟机退出的时候不执行。

声明异常

trows 关键字 声明异常
使用原则:底层代码向上声明或者抛出异常,最上层一定要处理异常,否则程序中断,在方法后面添加

抛出异常

除了系统自动抛出异常外,有些问题需要程序员自行抛出异常
throw关键字: 抛出异常
throw异常对象;
throw new RuntimeException

自定义异常

需要继承Exception或Exception子类,常用RuntimeException。

  • 必要提供的构造方法
    • 无参构造方法
    • String message参数的构造方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值