异常
 
异常:异常就是Java程序在运行过程中出现的错误。
异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。
其实就是Java对不正常情况进行描述后的对象体现。
Throwable
        |--Error        严重问题,我们不处理。
        |--Exception
                |--RuntimeException        运行期异常,我们需要修正代码
                |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
 
 
Exception和Error的子类名都是以父类名作为后缀。
 
Java中的异常被分为两大类:编译时异常和运行时异常。
所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常
编译时异常
•Java程序必须显示处理,否则程序就会发生错误,无法通过编译
运行时异常
•无需显示处理,也可以和编译时异常一样处理
 
 
Throwable基本方法
getMessage()
•获取异常信息,返回字符串。
toString()
•获取异常类名和异常信息,返回字符串。
printStackTrace()
•获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
printStackTrace(PrintStream s)
•通常用该方法将异常内容保存在日志文件中,以便查阅。
 
throws和throw
throws
•用在方法声明后面,跟的是异常类名
•可以跟多个异常类名,用逗号隔开
•表示抛出异常,由该方法的调用者来处理
•throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
•用在方法体内,跟的是异常对象名
•只能抛出一个异常对象名
•表示抛出异常,由方法体内的语句处理
•throw则是抛出了异常,执行throw则一定抛出了某种异常 
 
异常处理过程
 
JVM的默认处理
        把异常的名称,原因,位置等信息输出在控制台,但是程序不能继续执行了。
自己处理
        try...catch...finally
                自己编写处理代码,后面的程序可以继续执行
        throws
                把自己处理不了的,在方法上声明,告诉调用者,这里有问题
 

try

{

需要检测的代码;

}

catch

(异常类  变量)

{

异常处理代码;

}

finally

{

一定会执行的代码;

}

Finally代码块控制的语句体一定会执行

只有一种情况不会被执行。就是在之前执行了System.exit(0)。

主要用于释放资源

 
常见变形形式
                        try...catch...finally
                        try...catch...
                        try...catch...catch...
                        try...catch...catch...fianlly
                        try...finally
 
 
 
自定义异常
自定义类继承Exception或者其子类,只需要提供无参构造和一个带参构造即可
通过构造函数定义异常信息。

例:

Class DemoException extends Exception

{

  DemoException(String message)

  {

  super(message);

  }

}
通过throw将自定义异常抛出。
 
RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
1.父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常,也就是必须抛出相同的异常或异常的子类
2.父的方法没有异常抛出,子的重写方法不能有异常抛出,如果子类方法内有异常发生,那么子类只能try,不能throws
3.父的方法抛出多个异常,子的重写方法必须比父少或者小,不能抛出新的异常
 

-1-6 java 异常简单介绍 java异常 异常体系 Throwable 分类 throws和throw 异常处理 自定义异常的更多相关文章

  1. (转)简单介绍java Enumeration

    简单介绍java Enumeration 分类: java技术备份 java数据结构objectstringclass存储 Enumeration接口  Enumeration接口本身不是一个数据结构 ...

  2. Java集合简单介绍

    再最前面分享一下我再学习集合时的方法: 1.首先了解各集合的定义和特点 2.集合的构造方法和常用方法(增删改查等) 3.了解集合使用的场景,再什么情况下使用什么类型的集合(关键是集合的特性) 4.了解 ...

  3. Java Bean 简单介绍及其应用

    Bean的中文含义是"豆子",顾名思义JavaBean是一段Java小程序.JavaBean实际上是指一种特殊的Java类.它通经常使用来实现一些比較经常使用的简单功能.并能够非常 ...

  4. Java NIO简单介绍(二)

    上一篇<NIO简单介绍(一)>中讲解了NIO中本地IO相关的内容,这篇重点介绍的NIO的非阻塞式网络通信 一.阻塞与非阻塞 传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read ...

  5. java多线程(简单介绍)

    简单介绍 线程是程序运行的基本执行单元.当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来 ...

  6. 简单介绍 Java 构造器

    导读 构造器是编程的强大组件.使用它们来释放 Java 的全部潜力. 在开源.跨平台编程领域,Java 无疑(?)是无可争议的重量级语言.尽管有许多伟大的跨平台框架,但很少有像 Java 那样统一和直 ...

  7. JAVA体系结构简单介绍

    JAVA 体系结构包括四个独立但相关的技术: java程序设计语言 java class 文件格式 JAVA应用编程接口(API) JAVA虚拟机(JVM) 当编写运行一个java程序时,就同时体验了 ...

  8. JAVA NIO 简单介绍

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00918492 一:为什么要使用NIO技术        ...

  9. Java NIO简单介绍(一)

    Java NIO( New IO) 是从Java 1.4版本开始引入的 一个新的IO API,可以替代标准的Java IO API. NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NI ...

随机推荐

  1. 神奇高效的Linux命令行

    一.为什么要学linux命令 Linux是由命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的.Linux命令有许多强大的功能:从简单的磁盘操作.文件存取, ...

  2. java的3大特性

    java的3大特性 1.继承: * 继承是从已有类得到继承信息创建新类的过程. * 提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类). * 继承让变化中的软件系统有定的延 ...

  3. Java当中的IO二

    1.大文件的读写方法 由于文件很大,我们不能一下子把文件内的所有内容都读取出来,所以只能一段一段的读取 注意:在关闭read()和write()的时候可能会产生IOException,需要对其进行处理 ...

  4. 为不具有change事件的html标签设置监听事件

    change事件会在文本内容或选项被更改时触发. 该事件仅适用于<input type="text">和<textarea>以及<select> ...

  5. Springboot入门之分布式事务管理

    springboot默认集成事务,只主要在方法上加上@Transactional即可. 分布式事务一种情况是针对多数据源,解决方案这里使用springboot+jta+atomikos来解决 一.po ...

  6. js计算指定日期的下一年的日期

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Chrome+postman+postman interceptor调试

    本文使用chrome+postman4.8.3+postman interceptor0.2.23调试使用cookie的请求. postman4.8.3下载地址:https://pan.baidu.c ...

  8. Hadoop 集群安装(主节点安装)

    1.下载安装包及测试文档 切换目录到/tmp view plain copy cd /tmp 下载Hadoop安装包 view plain copy wget http://192.168.1.100 ...

  9. WebAssembly让你的Javascript计算性能提升70%

    现在的JavaScript代码要进行性能优化,通常使用一些常规手段,如:延迟执行.预处理.setTimeout等异步方式避免处理主线程,高大上一点的会使用WebWorker.即使对于WebWorker ...

  10. leetcode-数组-子集

    一.题目描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], ...