异常的介绍、异常的父类Throwable、运行时异常、编译时异常

异常的介绍

程序正常的情况下是可以运行的,知识偶尔因为其他的原因导致了程序的不正常。
列如:用户输入参数的问题(除数不能为零),用户文件被删除,用户控件已满,网络中断
程序的运行过程中,可能遇到了“不正常”的情况,导致程序暂停或者崩溃了。

不是异常的情况:
(1)语法错误,编译都不通过
(2)逻辑错误

java如何处理异常,java的异常的处理机制是什么样子的?

java运行中,如果某句代码发生异常,那么java会在这句代码处停下来,
java会创建一个“异常的对象”,并且“抛”出来。
java会检测这句代码的外围是否有“try…catch”可以“捕获”它,如果可以捕获,那么程序会从这个try…catch继续运行
如果外围没有“try…catch”可以“捕获”它那么程序就会先抛给“上级(调用者)”,上级也会检查否有“try…catch”可以“捕获”它,如果可以捕获,那么程序会从上级try…catch继续运行继续运行如果一路上都没有try…catch可以捕获它,那么程序就“挂了”

简单说:java的异常处理机制用“异常对象”来表示异常情况,如果有try…catch可以捕获,就继续,否则就挂了。

异常的父类Throwable

Throwable 类是java 语言中所有错误或异常的超类
分为两个子类:
(1)Error:Error是Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题
列如:VirtualMachineError(虚拟机错误)
(2)Exception
又分为两大类
A:RuntimeException运行时异常(非受检异常);只有RuntimeException类型或它的子类是属于运行时异常
凡是运行时异常,编译器不会要求你加“try…catch”或“throws”

常见的运行时异常:
ArrayaindexOutOfBoundsException(数组下标越界)
NullPoniterException(空指针异常)
ClassCastException(类型转换异常)
ArithmeticException(算数异常)

B:编译时异常(受检异常):除了运行时异常,剩下的全部是编译时异常。

凡是编译时异常,编译器强制要求你必须加“try…catch”或“throws”之一,否则编译不通过
常见的编译时异常:
InterruptedException:线程中断打扰异常
FileNotFoundException:文件找不到

面试题:
1、编写代码,使得发生VirtualMachineError(OutOfMemoryError,StackOverflowError)
2、列出你开发中常见的类型?(至少五个以上)
列出几种运行时异常
列出几种编译时异常

import java.io.FileInputStream;

import org.junit.Test;


public class TestExceptionType_2 {
	@Test
	public void test(){
		//FileInputStream fis = new FileInputStream("");
	}
	
//	@Test
//	public void test() throws InterruptedException{
//		Thread.sleep(1000);
//	}
	
	@Test
	public void testRuntimeException() {
		int[] arr = new int[5];
//		System.out.println(arr[6]);//ArrayaindexOutOfBoundsException
	
		String str = null;
		System.out.println(str.length());//NullPoniterException
	}
	
	//OutOfMemoryError(堆内存溢出)
	@Test
	public void testOutOfMemoryError() {
		Object[] arr = new Object[Integer.MAX_VALUE];
		System.out.println(arr.length);
	}
	
	//StackOverflowError(栈内存溢出异常,自己调用自己就会发生这个错误)
//	@Test
//	public void testStackOverflowError() {
//		testStackOverflowError();
//	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值