1、异常中最大的父类Throwable

Throwable可以分为两种:

Error

Exception: 

  • 运行时异常(非受检异常)
  • 非运行时异常(受检异常)

Error错误:Error是程序无法处理的错误,它是由jvm产生抛出的,比如OutOfMemoryError,ThreadDeath等,这些异常发生时,jvm会选择终止程序执行

Exception:是程序本身可以处理的异常

  • 运行时异常:都是RuntimeException类及子类,如NullPointerException(空指针),IndexOutOfBoundException(数组越界)等,这些异常可以选择捕获处理,或者可以不处理
  • 非运行时异常:(受检异常)时除了RuntimeException以外的异常,类型上属于Exception类,从程序语法角度这些异常必须要进行处理,如果不处理,程序不饿能通过编译,如IOException,SQIException

2、try-catch-finally三条语句注意的问题

  • try,catch,finally均不能单独使用,三者可以组合使用,组合方式:try…catch, try…catch…finally, try…finally ,其中catch可以有一个或者多个,finally语句最多只能有一个
  • 三个语句块中变量的作用域为代码块,分别独立的不能互相访问,如果要在三块中都可以访问,就把变量定义到这些块外边
  • 如果存在多个catch块,最多只会匹配一个异常类且执行该catch块代码,而不会在执行其他catch块,且匹配顺序是从上到下,最多只会匹配一个异常类,也就是说也可以一个异常类都不执行
  • catch捕获的异常类不能重复,且先捕获子类异常再捕获父类异常
  • 无论try中语句有没有问题,finally中的语句一定执行,finally为程序提供统一的出口,保证程序状态的统一管理,通常情况下finally中进行资源的关闭清除工作
package com.exception;
public class Test {
    public static void main(String[] args) {
        int[] a=new int[5];
        try {
            for (int i = 0; i <10 ; i  ) {
                a[i]=i;
            }
            //空指针
        }catch (ArrayIndexOutOfBoundsException e){
            //弹出出错的地方
            System.out.println("1");
            e.printStackTrace();
            //访问异常,数组越界
        }catch (NullPointerException e){
            System.out.println("2");
            e.printStackTrace();
            //无论有错与否,finally最终执行
        } finally {
            System.out.println("都能执行");
        }
        System.out.println("---------------");
    }
}

3、final-finally-finalize的各作用

  • final:用于定义常量的关键字
  • finally:异常中总能执行的代码块
  • finalize() :垃圾回收,该方法是系统调用,不用程序员手动调用

4、throws关键字

  • 定义一个方法的时候可以使用throws关键字声明,表示该方法时不处理该异常,而是交给方法调用者处理该异常
  • 在定义方法时,throws关键字可以程序员自主选择使用,如果使用了,那么说明该方法时不处理该异常的
  • 如果主方(main)也使用throws关键字,那么就意味着主方法也不处理异常,最后留给jvm处理,jvm处理异常就是终止程序
  • throws抛出一个子类异常,调用该方法的调用者可以不必须处理该异常

注意:

throw关键字:是可以自定义异常,也就是抛异常,抛出的时候是一个异常类的对象

5、throws和throw的区别

throws:

  • 用在方法声明之后,跟着的是异常类名
  • 可以跟多个异常类,用逗号隔开
  • 表示抛出异常,有该方法的调用者处理
  • throws表示出现异常的一种可能性,并不一定会发生异常

throw:

  • 用在方法体内,跟着的是异常对象
  • 只能抛出一个异常对象
  • 表示抛出异常,有方法体内语句处理
  • throw抛异常是一定会发生,并不是一种可能

代码表示:

package com.test;
public class Throw {
    //throws Exception 代表该方法出现异常时不做处理
    public void deposit(int num1,int num2) throws Exception
    {
        // RuntimeException()是运行时异常最大的父类
        int sum;
        if(num2==0){
            throw new RuntimeException("可以自定义一个异常抛出:除数不能为0");
        }else{
           sum=num1/num2;
        }
    }
}

到此这篇关于Java异常Exception详细讲解的文章就介绍到这了,更多相关Java异常 内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Java异常Exception详细讲解的更多相关文章

  1. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  2. 浅谈PHP中的错误处理和异常处理

    下面小编就为大家带来一篇浅谈PHP中的错误处理和异常处理。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. Java如何主动从当前线程获取异常信息

    这篇文章主要介绍了Java如何主动从当前线程获取异常信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  4. Java异常分类处理抛出捕获操作详解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  5. PHP中的异常及其处理机制

    这篇文章主要介绍了PHP中的异常及其处理机制,帮助大家更好的理解和学习使用PHP,感兴趣的朋友可以了解下

  6. Java线程的异常处理机制详情

    这篇文章主要介绍了Java线程的异常处理机制详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  7. Java异常架构和异常关键字图文详解

    Java异常是Java提供的一种识别及响应错误的一致性机制,下面这篇文章主要给大家介绍了关于Java异常架构和异常关键字的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  8. PHP中错误与异常的日志记录用法分析

    这篇文章主要介绍了PHP中错误与异常的日志记录用法,较为详细的分析了php中错误与异常的区别以及日志记录的相应使用技巧,需要的朋友可以参考下

  9. Python错误+异常+模块总结

    这篇文章主要介绍了Python错误+异常+模块总结,在编程时遇见错误信息在所难免,Python中会也有很多种错误信息,常见的两种就是语法错误和逻辑错误,下文我们就来总结一下那些常见的异常,需要的小伙伴可以参考一下

  10. 使用Raygun来自动追踪AngularJS中的异常

    这篇文章主要介绍了使用Raygun来自动追踪AngularJS中的异常,AngularJS是一款高人气的JavaScript库,需要的朋友可以参考下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部