异常处理

java异常处理

程序运行时发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程
序自生自灭,立刻退出终止。

出错的处理方式

以前正常流程代码和问题处理代码相结合。现在将正常流程代码和问题处理代码分离,以提高阅读性。
其实异常就是Java通过面向对象的思想将程序中的问题封装成了对象,用异常类对其进行描述。1、不同的问题用
不同的类进行具体的描述。2、问题很多,意味着描述的类也很多,将其共性进行向上抽取就形成了异常体系

关键字

Java异常处理的关键字有throws、throw、try、catch、finally共5个关键字

异常的分类

JavaSE中定义了很多异常类,这些类可以对应各种各样可能出现的异常事件。
在这里插入图片描述
Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个
异常对象,才能被异常处理机制识别

分类

java异常 按照 能否处理可以分为
1、Error及其子类:错误,一般指的是虚拟机的错误,是由Java虚拟机生成并抛出,程序不能进行处理所以也不加
处理,例如OutOfMemoryError内存溢出、调用栈溢出StackOverFlowError
2、Exception :异常,是程序本身可以处理的异常。
Exception 又可以分为:
1.检查性异常(编译性异常)。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。如IOException、SQLException等以及用户自定义的Exception异常。
2.非检查性异常(运行时异常) RuntimeException及其子类。 一般是程序代码写的不够严谨而导致的问题,可以通过修改代码来规避。

常见的异常

ArithmeticException 算术异常, 就是执行数学计算时产生的非正常情况,如除以0

NullPointerException空指针异常 (试图访问null对象的引用)

IndexOutOfBoundsException 下标越界异常

ClassCastException 类型转换异常

NumberFormatException 数据格式异常

illegalargumentexception 非法参数异常

illegalaccessexception 访问权限异常

SQLException 数据库异常
IOException 输入输出异常

java异常处理
try–

用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被
抛出。 catch–用于捕获异常。catch用来捕获try语句块中发生的异常,catch只匹配成功一次即可,注意不是最佳匹配。
finally-- finally语句块总是会被执行。它主要用于回收在try块里打开的资源(如数据库连接、网络连接和磁盘文件)。
只有 finally块,执行完成之后,才会执行try或者catch块中的return或者throw语句,如果 finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。

throw–

人为编程实现抛出异常。

throws–

用在方法签名中,用于声明该方法可能抛出的异常,要求谁调用谁处理这个异常。主方法上也可以使用
throws抛出。如果在主方法上使用了throws抛出,就表示在主方法里面可以不用强制性进行异常处理,如果出现
了异常,就交给JVM进行默认处理,则此时会导致程序中断执行。

常见的3种输出异常的用法

System.out.println(e);//java.lang.ArithmeticException: / by zero
System.out.println(e.getMessage()); // / by zero
e.printStackTrace(); 调用栈

finally、 final和 finalize的区别

异常处理建议规则

1、不要过度使用异常,不要把异常当做不同的逻辑分支对待
2、不要使用过于庞大的try块
3、避免使用catch all语句 try{}catch(Throwable t){}
4、坚决不要忽略捕获的异, 坚决不允许 catch 块中内容为空

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值