关于IO流中异常的概述和分类以及jvm是如何默认处理异常的

1、什么是异常?
异常就是Java程序在运行过程中出现的错误。简单来讲就是程序出现了不正常的情况。
异常由来:问题也是现实生活中的一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。
2、程序的异常分类:
Java把所有的非正常情况分成两种:异常和错误,它们都继承Throwable父类。
Throwable类是java语言中所有错误或异常的超类。也就是说 Throwable类是表示Java中所有的错误和异常
Throwable有两个子类:分别是Error以及Exception
Error和Exception虽然都是子类,但是相对于程序来说,出现Error的错误是严重于出现Exception异常的。
错误:Error
Error错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败内存溢出等,这种错误无法恢复或不可能捕获,将导致应用程序中断。通常应用程序无法处理这些错误,因此应用程序不应该试图使用catch块来捕获Error对象。Error问题是属于一种严重问题,一般是不处理的。
异常:Exception
Exception的异常被分为两大类:Checked异常(编译期异常)和Runtime异常(运行时异常)。
运行期异常:RuntimeException 指的是那些可能在java虚拟机正常运行期间出现的异常
编译期异常:不是RuntimeException异常就是编译期异常
所以,我们可以认为,只要不是运行期异常,就是编译期异常
只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误,无法通过编译。
相对于Checked异常来说Runtime异常则更加灵活,Runtime异常无须显式声明抛出,程序如果需要捕获Runtime异常,也可以使用try…catch块来实现。
如果出现RuntimeException异常这个问题,那就说明是我们写的代码不够严谨,需要修正代码
总结:
Throwable父类包括了Java中所有的错误和异常
Error错误:属于严重问题,一般是不处理的。
Runtime异常:所有的RuntimeException类及其子类的实例;
注意:必须进行处理,如果不处理,编译就不能通过
Checked异常:不是RuntimeException类及其子类的异常实例。
注意:运行期间异常,代码不严谨,需要修正代码
3、jvm默认处理
如果程序出现了问题,但是我们没有做任何处理,最终jvm会做出默认的处理
默认的处理:把异常的名称,原因以及出现的问题等等信息输出在控制台
Exception in thread “main” 问题出现的地方
java.lang.ArithmeticException 问题的名称以及所在的java包
/ by zero 问题的原因
main(Exception.java:33) 问题出现的行号
如果代码有阶段的话,只要有一步错,那么往下的代码都不会输出,即使其他阶段的代码是正确的。同时结束进程
4、关于处理异常的两种方法
try…catch捕获异常 最基本的处理方法 **
throws 抛出
try…catch 可以处理一种异常也可以处理多种异常
一个异常:在出现错误的代码处写一个try…catch
两个以上异常:
1.在每一处错误的地方写一个try…catch
2.写一个try 多个catch
try…catch 语法格式:
try{
可能出现问题的代码;
}catch(异常名变量 e){
针对问题的处理1;
}catch(异常名变量 e){
针对问题的处理2;
}…catch(异常名变量 e){
针对问题的处理3;
}
try里面的代码越少越好。catch里面必须有内容,即使是一个简单的提示
因为可能出现问题的代码就是放在try里面的。这样就要走异常处理机制,java要开辟一些新的资源去管理它,错误的代码越多,java要用到的处理资源也就越多
注意:
在使用try…catch捕获处理异常时需要注意:

  1. 不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句
  2. 异常捕获时,一定要先捕获小异常,再捕获大异常。否则小异常将无法被捕获 **
  3. 避免出现庞大的try块 **
  4. 不要忽略异常 **
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值