zoukankan      html  css  js  c++  java
  • java异常学习笔记

    一.java异常简介

    1.异常:程序在运行过程中发生由于外部问题(如硬件错误、输入错误)等导致的程序异常事件。(在Java等面向对象的编程语言中)异常本身是一个对象。
    2.三种类型的异常:

    (1)检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

    (2)运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

    (3)错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

    3.异常方法

    (1)public String getMessage():返回关于发生的异常的详细信息。

    (2)public Throwable getCause():返回一个Throwable 对象代表异常原因。

    (3)public String toString():使用getMessage()的结果返回类的串级名字。

    (4)public void printStackTrace():打印toString()结果和栈层次到System.err,即错误输出流。

    (5)public StackTraceElement [] getStackTrace():返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。

    (6)public Throwable fillInStackTrace():用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中

    二、异常的使用及注意点

    1、异常的处理方案

    try...catch、try...catch...finally、try...finally
        try{
            可能会发生异常的代码块
        }catch(异常类型 异常名(变量)){
            针对异常进行处理的代码
        }catch(异常类型 异常名(变量)){
            针对异常进行处理的代码
        }finally{
            一定会执行的代码
        }

    2.在catch捕获异常时,为什么不考虑使用Throwable类型,而只是使用Exception来进行接收?

    Throwable表示的范围要比Exception大。实际上程序使用Throwable来进行处理,没有任何语法问题,但是却会存在逻辑问题。因为此时出现的(或者说用户能够处理的)只有Exception类型,而如果使用Throwable接收,还会表示可以处理Error的错误,而用户是处理不了Error错误的,所以在开发中用户可以处理的异常都要求以Exception类为主。

    3.检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)区别?

    (1)所有的检查性异常都继承自java.lang.Exception;所有的非检查性异常都继承自java.lang.RuntimeException。

    (2)检查性异常和非检查性异常最主要的区别在于其处理异常的方式:检查性异常必须使用try catch或者throws等关键字进行处理,否则编译器会报错;非检查性异常一般是程序代码写的不够严谨而导致的问题,可以通过修改代码来规避。

    (3)常见的运行时异常:空指针异常(NullPointerException)、除零异常(ArithmeticException)、数组越界异常(ArrayIndexOutOfBoundsException)等;

    (4)常见的检查性异常:输入输出异常(IOException)、文件不存在异常(FileNotFoundException)、SQL语句异常(SQLException)等。

    三.自定义异常

    自定义的异常应该总是包含如下的构造函数:

    (1)一个无参构造函数

    (2)一个带有String参数的构造函数,并传递给父类的构造函数。

    (3)一个带有String参数和Throwable参数,并都传递给父类构造函数

    (4)一个带有Throwable 参数的构造函数,并传递给父类的构造函数。

    参考博客:https://blog.csdn.net/sugar_no1/article/details/88593255

  • 相关阅读:
    九、一级缓存、二级缓存
    八、懒加载
    七、一对一、一对多、多对多
    六、通过mapper接口加载映射文件
    五、动态SQL
    c# ie 设置radio选中状态
    MySQL ----数据库操作
    起点
    Java的三大特性总结
    dom4j操作xml
  • 原文地址:https://www.cnblogs.com/mqlblog/p/14280784.html
Copyright © 2011-2022 走看看