【探索Java世界05】Java错误与异常

一、错误与异常概述

1.概念

  • 程序运行过程中,可能会发生一些不被期望的效果,肯定会阻止我们的程序按照指令去执行
    这种不被期望出现的效果,肯定需要抛出来告诉我们
  • java中有一个定义好的规则Throwable(可以抛出的)有两个子类,Throwable是一个父类实现了接口

2.错误(Error)

  • 通常是一些物理性的,JVM虚拟机本身出现的问题,程序指令是处理不了的

3.异常(Exception)

  • 通常是一种人为规定的不正常现象,通常是给定的程序指令产生了一些不符合规范的事情

二、异常整体分支

1.运行时异常(非检查异常)

	ErrorRuntimeException都算作运行时异常
	javac编译的时候,不会提示和发现的
    在程序编写时不要求必须处理,如果我们愿意可以添加处理手段(try throws)
    要求出现这样的异常的时候,知道怎么产生及处理
    1InputMisMatchException 输入不匹配
    例如:int value = input.nextInt();//abc
    2NumberFormatException 数字格式化
    例如:int value = Integer.parseInt("123.4");
    3NegativeArraySizeException 数组长度负数
    例如:int[] array = new int[-2];
    4ArrayIndexOutOfBoundsException 数组索引越界
    例如:int[] array = {1,2,3};
    array[5];
    5NullPointerException 空指针异常
    例如:int[][] array = new int[3][];
    array[0][0] = 10;
    6ArithmeticException 数字异常
    例如:10/0 整数不允许除以0   Infinity小数除以0会产生无穷
    7ClassCastException 造型异常
    例如:Person p = new Teacher();
    Student s = (Student)p;
    8StringIndexOutOfBoundsException 字符串越界
    例如:String str = "abc";
    str.charAt(5);
    9IndexOutOfBoundsException 集合越界
    例如:一般list家族中出现
    ArrayList list = new ArrayList();
    list.add() list.add() list.add()
    list.get(5);
    10IllegalArgumentException 非法参数异常
    例如:ArrayList list = new ArrayList(-2);

2.编译时异常(检查异常)

	除了ErrorRuntimeException以外的其他异常
	javac编译的时候,强制要求我们必须为这样的异常做处理(try或者throws)
	因为这样的异常在程序运行的过程中极有可能产生问题
	异常产生后后续的所有执行就停止了
	1InterruptException
		try
		{
			Thread.sleep(5000);
		}
		catch(Exception e)
        {
		
		}

三、处理异常手段

  • 添加处理异常的手段
  • 处理异常不是异常消失了
  • 处理异常指的是处理掉异常之后,后续的代码不会因为此异常而终止执行

1.try{}catch(){}[fianlly{}]

    1try不能单独的出现
    2、后面必须添加catch或者finally
    3catch有一组括号()是为了捕获某一种异常
    4catch可以有很多个存在
        捕获的异常之间没有任何的继承关系
        捕获的异常需要从小到大进行捕获
    5finally不是必须存在的
        若存在finally结构,则必须执行
    6、处理异常放在方法内部时
        如果在方法内部含有返回值
        不管返回值return关键字在哪里,finally一定会执行完毕
        返回的具体结果看情况

2.throws抛出

    1、异常只能在方法上抛出,属性是不能处理异常的
    2、方法 构造
    3、方法可以抛出不止一个异常,通过逗号隔开
    4、抛出的异常与多个catch类似,要么没关系,要么先抛出小异常

四、自定义异常

  • 我们可以自己创建异常–具体步骤
    1、自己描述一个异常的类
    2、让我们自己的类继承
       如果继承是RuntimeException--->运行时异常(不需要必须处理异常手段)
       如果继承Exception---->编译时异常(必须添加处理手段)
    3、创建一个当前自定义异常类的对象
       通过throw关键字,主动产生异常
    4、当我们设计描述的方法(事情)之前没有相关的异常能描述我的问题时
       这个时候才会利用自定义异常来描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值