Java-异常

本文介绍了Java中的异常处理机制,包括概念、异常体系结构,涵盖了编译时异常(如IOException和ClassNotFoundException)和运行时异常(如NullPointerException)的实例。通过代码演示,展示了如何处理不同类型的异常,如文件操作、空指针异常等。
摘要由CSDN通过智能技术生成

Java-异常

1.概念

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKKlNPc3-1650940577153)(C:\Users\limingwei6\AppData\Roaming\Typora\typora-user-images\image-20220425160153898.png)]

2.异常体系结构

 * java.lang.Throwable
 * 		|-----java.lang.Error:一般不编写针对性的代码进行处理。
 * 		|-----java.lang.Exception:可以进行异常的处理
 * 			|------编译时异常(checked)
 * 					|-----IOException
 * 						|-----FileNotFoundException
 * 					|-----ClassNotFoundException
 * 			|------运行时异常(unchecked,RuntimeException)
 * 					|-----NullPointerException
 * 					|-----ArrayIndexOutOfBoundsException
 * 					|-----ClassCastException
 * 					|-----NumberFormatException
 * 					|-----InputMismatchException
 * 					|-----ArithmeticException

3.code举例

  • 错误
package p8exception;

public class ErrorTest {
    public static void main(String[] args) {
        // 栈溢出 java.lang.StackOverflowError
		 main(args);
        // 堆溢出 java.lang.OutOfMemoryError(简称OOM)
        Integer[] arr = new Integer[1024*1024*1024];

    }
}
  • 异常
package p8exception;

import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.util.Date;
import java.util.Scanner;


public class ExceptionTest {
    //******************************************编译时异常******************************//
    //FileNotFoundException 编译时异常
    @Test
    public void test7() {
        File file = new File("hello.txt");
        FileInputStream fils = new FileInputStream(file);
        int data = fils.read();
        while (data != -1) {
            System.out.print(data);
        }
        fils.close();
    }


    //******************************************运行时异常******************************//
    //空指针异常 java.lang.NullPointerException
    @Test
    public void test1() {
        int[] arr = null;
        System.out.println(arr[3]);

        String str = null;
        // 调用null 的 toString方法
        System.out.println(str.toString());
    }

    //数组角标越界 java.lang.ArrayIndexOutOfBoundsException
    @Test
    public void test2() {
//        int[] arr = new int[10];
//        System.out.println(arr[10]);
        // 字符串角标越界 java.lang.StringIndexOutOfBoundsException
        String str = "aka";
        System.out.println(str.charAt(3));
    }

    // 类型转换异常 java.lang.ClassCastException
    @Test
    public void test3() {
        Object obj = new Date();
        String str = (String)obj;

    }


    // 类型转换异常 NumberFormatException
    @Test
    public void test4() {
        String str = "abc";
        int num = Integer.parseInt(str);
    }


    // 输入类型不匹配 InputMismatchException
    @Test
    public void test5() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入数字:");
        int score = scanner.nextInt();
        System.out.println(score);

    }

    //数学异常  java.lang.ArithmeticException
    @Test
    public void test6() {
        int a = 10;
        int b = 0;
        System.out.println(a/b);

    }

}
n
    @Test
    public void test6() {
        int a = 10;
        int b = 0;
        System.out.println(a/b);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值