异常解析

原创 2016年08月05日 16:39:22

异常:程序在运行时出现的不正常情况

异常的由来:程序在运行时出现的不正常情况也被看成了对象,提取属性和行为进行描述( 比如异常信息,异常名称,异常发生的位置),从而形成了各种异常类

Throwable是Error和Exception的父类
Throwable
—Error :运行时出现的严重问题,不用写相关的处理代码
—Exception :不严重的问题,通常需要进行处理

下面一个简单的数组越界异常

class Demo7 
{
    public static void main(String[] args) 
    {
        int[] arr = new int[3];
        /*
        当发生下标越界异常时,因为这种下标越界异常在java内部已经定义好了,所以系统会自动创建
        该异常类对象,因为main函数处理不了这种异常抛给了JVM,JVM默认的处理方式就是调用该异常类对象
        的printStackTrace()方法,打印出异常类名称,异常信息,异常发生的位置,然后程序中断
        */

        System.out.println(arr[3]); //throw new ArrayIndexOutOfBoundsException()---JVM

        System.out.println("over");
    }
}



使用throws声明可能发生异常,那么调用者必须处理,
处理方式有两种
1:使用try{}catch(异常类 e){}处理
2:继续使用throws声明可能发生异常

class MyMath
{
    public int div(int a,int b)
    {
        return a/b; //throw new ArithmeticException()
    }
}
class Demo9 
{
    public static void main(String[] args) 
    {
        MyMath myMath = new MyMath();
        try
        {
            int result = myMath.div(3,0); //new ArithmeticException()
            System.out.println("result="+result);
        }
        catch(Exception e)//Exception e = new ArithmeticException()
        {
            //System.out.println("除数为0了");
            //System.out.println(e.getMessage());//异常信息
            //System.out.println(e.toString());//异常名称:异常信息
            e.printStackTrace();//异常名称:异常信息  异常发生的位置

        }
        System.out.println("go on");

    }
}


class MyMath
{
    public int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException
    {
        int[] arr = new int[4];
        System.out.println(arr[4]);// throw new ArrayIndexOutOfBoundsException();//如果这里抛异常了那么下面就不运行了
        return a/b;//在上面不抛异常的情况下,若b为0那么抛异常
    }
}
class Demo11 
{
    public static void main(String[] args)//多重异常--子类异常要写在父类异常的上边儿
    {
        MyMath myMath = new MyMath();
        try
        {
            int result = myMath.div(3,0); //new ArrayIndexOutOfBoundsException()
            System.out.println("result="+result);
        }
        catch (ArithmeticException e)//Exception e= new ArrayIndexOutOfBoundsException();
        {
            System.out.println("除数为0了");
        }
        catch(ArrayIndexOutOfBoundsException e)
        {
            System.out.println("下标越界了");
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

手机异常信息Zeol 命令解析

  • 2010年12月30日 14:17
  • 60KB
  • 下载

Node.js 异步异常的处理与domain模块解析

异步异常处理 转载于:Node.js异步异常的处理与domain模块解析 异步异常的特点 由于node的回调异步特性,无法通过try catch来捕捉所有的异常: try { proc...

JAVA常见异常解析

  • 2012年12月17日 13:25
  • 67KB
  • 下载

Android开发中遇到的json解析异常问题

Ⅰ.前言昨天在解析后台返回的json数据时,json数据一直解析失败,刚开始以为是kotlin的bean类问题 ,因为项目已经逐渐把开发语言从java转为kotlin,还是第一次使用kotlin写b...

UsageStatsService之坑:一个XML解析异常导致的开机动画死循环

最近客户返修了一个盒子(Android4.2系统),问题现象表现为盒子开机后,系统的开机动画不断循环播放,一直没进Launcher,而且是必现问题,每次开机都是如此。 同样的ROM,同样硬件类型的盒子...

SpringMVC学习总结(六).异常处理解析器

HandlerExceptionResolver     • Spring MVC通过HandlerExceptionResolver处理程序的异常,包括Handler 映射、数据绑定以及目标方...

linux系统中关于中断、异常、系统调用、陷阱等概念的解析

中断:是为了设备与CPU之间的通信。典型的有如服务请求,任务完成提醒等。比如我们熟知的时钟中断,硬盘读写服务请求中断。        中断的发生与系统处在用户态还是在内核态无关,只决定于EFLAGS...

springmvc 报无法解析视图异常

最近,前端nginx的日志一直在报一些URL的请求后端响应是500状态码,于是缓存其结果,可以看到一直是报一个 javax.servlet.ServletException: Could not re...

异常:程序包org.apache.http不存在 的问题解析

异常:Error:(19, 23) 错误: 程序包org.apache.http不存在 Error:(20, 23) 错误: 程序包org.apache.http不存在 Error:(21, 23) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:异常解析
举报原因:
原因补充:

(最多只允许输入30个字)