zoukankan      html  css  js  c++  java
  • 异常处理

    Java异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

    比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。

    • Exception类的层次
    • Java内置异常类

    异常发生的原因有很多,通常包含以下几大类:

             1.用户输入了非法数据
             2.要打开的文件不存在
             3.网络通信中断,或者jvm内存溢出

     举个最好懂的例子

          如果代码出现异常,你是觉得将这个异常处理掉好呢,还是让程序崩溃好呢。
          大多数异常都是输入错误造成的,捕获异常,处理异常,然后等待重新输入总比程序崩溃,给用户的感觉好吧。
          比如你用支付宝转账,由于网络原因复发接受回复,而网络超时这个“异常”如果处理了,这时候弹个框告诉你超时了,让你刷新界面重试。而如果不处理,支付宝闪退,哪个让你更不爽呢.

    掌握三种异常类型:

    • 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的
    • 运行时异常:运行时异常时可能被程序员避免的异常,在编译时会被忽略
    • 错误:不是异常,是脱离程序员控制的问题,在代码中通常被忽略。例如,当栈溢出时。编译是检查不到的

    Exception类的层次

    所有的异常类都是从Java.lang.Exception类继承的子类。
    Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。

    Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。

    Error 用来指示运行时环境发生的错误。

    例如,JVM 内存溢出。一般地,程序不会从错误中恢复。

    异常类有两个主要的子类:IOException 类和 RuntimeException 类。Thorwable

    1. Error
    2. Exception
      • IOException
      • RuntimeException

    Java内置异常类

    有一些异常类在java.lang标准包中。

    异常说明
    ArithmeticException 当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个异常
    ArrayIndexOutOfBoundsException 用非法索引访问数组时异常,超出或者小于数组长度
    ArrayStorreException 试图将一个错误类型的对象存储到一个对象数组时异常
    ClassCastException 当试图将对象强制转换为不是实例的子类时,抛出该异常
    IllegalArgumentException 抛出异常表明向方法传递了一个不合法或不正确的参数
    IllegalMonitorStateException 抛出异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程
    IllegalStateException 在非法或者不适当的时间调用方法时产生的信号
    IllegalThreadStateException 线程没有处于请求操作所要求的适当状态时抛出的异常
    IndexOutOfBoundsException 指示某排序索引超出时
    NegativeArraySizeException 如果应用程序试图创建大小为负的数组,则抛出该异常
    NullPointerException 当应用程序试图在需要对象的地方使用null时
    NumberFormException 当应用程序试图将字符串转换为一种数值类型,但该字符串本那个转换为适当的格式时,抛出
  • 相关阅读:
    ThinkPHP运算符 与 SQL运算符 对比表
    [Java 8] (6) Lambda与资源管理
    Codeforces Round #275 (Div. 2) C
    HOJ 2245 浮游三角胞(数学啊 )
    [UVALive 6663 Count the Regions] (dfs + 离散化)
    浅解ARC中的 __bridge、__bridge_retained和__bridge_transfer
    SpringMVC: web.xml中声明DispatcherServlet时一定要加入load-on-startup标签
    Unity3d 4.3.4f1执行项目
    更新Windows ActiveX,Ios
    C++11: final与override
  • 原文地址:https://www.cnblogs.com/bomily0212/p/12083217.html
Copyright © 2011-2022 走看看