异常概述与异常体系结构与常见异常

异常:在 Java 语言中,将程序执行中发生的不正常情况称为“异常”。 (开发过程中的语法错误和逻辑错误不是异常 )

 

Java程序在执行过程中所发生的异常事件可分为两类:

        >Error: Java 虚拟机无法解决的严重问题。如: JVM 系统内部错误、资源耗尽等严重情况。比如: StackOverflowError OOM 。一般不编写针对性的代码进行处理。
	    //1.栈溢出:java.lang.StackOverflowError
//		main(args);
		//2.堆溢出:java.lang.OutOfMemoryError 
		Integer[] arr = new Integer[1024*1024*1024];
        >Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:
                >空指针访问
                >试图读取不存在的文件
                >网络连接中断
                >数组角标越界
        >对于这些错误,一般有两种 解决方法 :一是遇到错误就终止程序的运行。另一种方法是由程序员在编写程序时,就考虑到错误的
检测、错误消息的提示,以及错误的处理。
        > 捕获错误最理想的是在 编译期间 ,但有的错误只有在 运行时 才会发生。比如: 除数为 0 ,数组下标越界

                > 分类: 编译时异常(受检(checked)异常) 运行时异常(非受检(unchecked)异常)

一、异常体系结构

       java.lang.Throwable
                 |-----java.lang.Error:一般不编写针对性的代码进行处理。
                 |-----java.lang.Exception:可以进行异常的处理
                     |------编译时异常(checked)
                             |-----IOException 输入输出异常
                                 |-----FileNotFoundException 找不到文件异常
                             |-----ClassNotFoundException 找不到类异常
                     |------运行时异常(unchecked,RuntimeException)
                             |-----NullPointerException 空指针异常
                             |-----ArrayIndexOutOfBoundsException 数组角标越界异常
                             |-----ClassCastException 类型转换异常
                             |-----NumberFormatException 数字格式异常
                             |-----InputMismatchException 输入类型错误异常
                             |-----ArithmeticException 算术异常

public class ExceptionTest {
	
	//******************以下是编译时异常***************************
	@Test
	public void test7(){
//		File file = new File("hello.txt");
//		FileInputStream fis = new FileInputStream(file);
//		
//		int data = fis.read();
//		while(data != -1){
//			System.out.print((char)data);
//			data = fis.read();
//		}
//		
//		fis.close();
		
	}
	
	//******************以下是运行时异常***************************
	//ArithmeticException
	@Test
	public void test6(){
		int a = 10;
		int b = 0;
		System.out.println(a / b);
	}
	
	//InputMismatchException
	@Test
	public void test5(){
		Scanner scanner = new Scanner(System.in);
		int score = scanner.nextInt();
		System.out.println(score);
		
		scanner.close();
	}
	
	//NumberFormatException
	@Test
	public void test4(){
		
		String str = "123";
		str = "abc";
		int num = Integer.parseInt(str);
		
		
		
	}
	
	//ClassCastException
	@Test
	public void test3(){
		Object obj = new Date();
		String str = (String)obj;
	}
	
	//IndexOutOfBoundsException
	@Test
	public void test2(){
		//ArrayIndexOutOfBoundsException
//		int[] arr = new int[10];
//		System.out.println(arr[10]);
		//StringIndexOutOfBoundsException
		String str = "abc";
		System.out.println(str.charAt(3));
	}
	
	//NullPointerException
	@Test
	public void test1(){
		
//		int[] arr = null;
//		System.out.println(arr[3]);
		
		String str = "abc";
		str = null;
		System.out.println(str.charAt(0));
		
	}
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值