异常处理
Posted aishuijdemiaomiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。
- 异常,不可避免
- 执行中发生的不正常情况(开发中语法和逻辑错误不算)
- Throwable类,异常根父类
- Public String getMessage() //打印错误信息
- public void printStackTrace() //打印异常抛出轨迹
- 机制,异常向上抛出,等待处理
- java健壮性,鲁棒性
- 异常处理
- 垃圾回收
- 强类型语言
- 地址不允许运算,避免指针异常
- 程度分类
- error,java虚拟机无法解决的严重问题。处理不了,不进行代码处理
- exception,其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性代码进行处理
- 空指针
- 试图读取不存在文件
- 类型错误
- 越界
- 除零
- 处理方式分类
- 受检异常:在程序中必须处理检查的异常(必须写异常处理处理语句)
- Exception其子类,RuntimeException及子类除外,
- 非受检异常: 在程序中不是必须检查处理的异常
- Error 及子类,严重错误,jvm无法处理
- RuntimeException 及其子类,轻微错误,比如除零异常
- 受检异常:在程序中必须处理检查的异常(必须写异常处理处理语句)
- 异常处理方法
- 捕获 try{ 可能出现的异样语句 }catch (异常类型 对象引用){异常处理语句}finally{语句块} //参数类型为异常选择
- try代码块时待捕获异常代码块
- catch代码块是根据错误类型选择处理方式的代码块
- finally是必须执行的代码块
- finally和return,finally若未执行则,拦截return,执行完finally之后再执行return
- 注return返回的值是储存在临时变量里的值
- throw语句可以用来从方法中主动抛出
- 一旦抛出异常,此方法就提前出栈,并不带着正常的返回值,而是带着需要处理的异常
- 方法签名添加警告(throws 异常名)
- 方法体用throw抛出异常
- main方法中一般不要抛出异常,一旦抛出,程序崩溃,入口方法适用
- 一般方法尽量抛出异常,交给上层处理
- 捕获再抛出
- 捕获到异常之后使用自定义异常包装之后抛出
- 更加统一,可以同一的代码块处理
- 捕获 try{ 可能出现的异样语句 }catch (异常类型 对象引用){异常处理语句}finally{语句块} //参数类型为异常选择
- 自定义异常
- 提供两个构造器
- 继承exception的异常时受检异常,必须处理
- 使用
- 方法签名加异常警告,(throws xxxxExcepton)
- 方法中使用throw来抛出异常
- 提醒使用者必须处理这个异
//自定义异常举例 class DividedByZeroException extends Exception { //构造器,错误信息 public DividedByZeroException(String message) { super(message); } //构造器,接收异常,做包装 public DividedByZeroException(Throwable cause) { super(cause); } }
以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章
java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段