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

    Error和Throwable类,面试遇到不会。

    java把所有的异常进行归纳。

    Throwable类下层有两个子类,一个是Exception,一个是Error。

    所有异常的父类是Throwable。

    Exception用来描述程序逻辑级别的错误,error抛出的系统级别的错误,比如说虚拟机出错。

    Exception表示由于网络故障、文件损坏、设备错误、用户输入非法等情况导致的异常;

    而Error表示java运行时环境出现的错误,例如JVM内存资源耗尽。

    发生了Error,修改算法(升级硬件不现实)。

    异常处理机制

    异常案例如下所示:

    public class Try_CatchDemo {
    public static void main(String[] args) {
    System.out.println("程序开始了");
    String string = null;
    System.out.println(string.length());
    System.out.println("程序结束了");
    }
    }

    string是null,抛出空指针异常。虚拟机会检测有没有抛出异常(有没有对异常进行处理),就向系统抛出异常。

    虚拟机会直接kill程序。这是闪退。

    异常,无法避免异常,但是我们可以去处理它。

    写异常是有顺序的,当异常之间存在继承关系的时候,应该将子异常放在父异常上面。

    package exception;
    /**
     * 异常处理机制中的try-catch
     * 语法定义:
     * try{
     * 可能出现异常的代码片段
     * }catch(XXXException e){
     * 捕获try中出现的XXXException后处理操作代码
     * 
     * @author 小明
     *
     */
    public class Try_CatchDemo {
        public static void main(String[] args) {
            System.out.println("程序开始了");
            try{
                String string = "";
                //String string = null;
                //String string = "a";
                System.out.println(string.length());
                System.out.println(string.charAt(0));
                System.out.println(Integer.parseInt(string));
                /*
                 * 需要捕获下标异常
                 */
                /**
                 * 在try块中出错语句以下的代码都不会被执行
                 */
                System.out.println("!!!!X");
            }catch(NullPointerException e){
                System.out.println("出现了空指针异常");
            }catch(StringIndexOutOfBoundsException e){
                System.out.println("出现了字符串下标异常");
                /**
                 * 应当有一个好习惯,在最后一个catch出捕获Exception
                 * 防止一个未捕获的异常导致程序中断
                 */
            }catch(Exception e){
                
            }
            
            System.out.println("程序结束了");
        }
    }

    运行结果如下所示:

    空指针异常被忽略。

  • 相关阅读:
    实现高效易用的java操作mysql包装
    部分NLuke版本源码更新(2009111)
    ASP.NET Forms验证的安全性问题研究——为什么加密代码需要配置为服务
    VirtualBox 虚拟机 Debian系统上安装Cassandra步骤及遇到的问题
    mysql master/slave 使用感受
    一个不必要的设计
    应对服务器端访问限制的一些办法(Cookie,Session,IP等)
    qq四国军旗2.1 beat03 builde017记牌器开发思路(一)
    MVC与WebForm最大的区别
    dell笔记本的Broadcom 802.11b/g 无线网卡ubuntu 9.10下安装
  • 原文地址:https://www.cnblogs.com/liaoxiaolao/p/9584930.html
Copyright © 2011-2022 走看看