异常解析

原创 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("下标越界了");
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[jvm解析系列][一]Java内存区域分配和内存溢出异常OOM

学过操作系统的同学应该比较清楚,一个操作系统必须要有完善的内存管理系统(页/段式的管理),相应的jvm全称java虚拟机应该也有类似的一种管理内存的方式,这种方式是建立在真实的操作系统内存管理方式之上...

JAVA常见异常解析

  • 2012-12-17 13:25
  • 66KB
  • 下载

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

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

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

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

你仍未知道那些有关 Activity典型、异常情况下的生命周期解析

平常在移动开发过程中,说起Activity的生命周期,开发人员不会陌生,但是此处概念切勿混淆,其生命周期分为典型情况下的生命周期与异常情况下的生命周期。第一种代表在用户交互情况下,Activity所经...

极其简单的一个JSP小功能+空指针异常Bug解析(内容更新)

说在前面 由于是从昨晚才开始更新的博客,要到工作室锁门的时间就匆忙上传了,上传完之后发现还有一些没弄完的,本来想今天更新一下内容,在登录的时候脑抽,新注册了一个CSDN用户,结果原来用QQ绑定的用...

Spring boot xstream解析UnknownFieldException异常

今天使用xstream解析xml文件,遇到一个特别隐蔽的问题,花费了几乎两个小时才解决。因此,记录一下,帮助其他遇到类似问题的同行们。刚开始通过spring boot启动一个web服务,访问一个指定u...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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