异常
 
异常:异常就是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. Hadoop namenode节点无法启动的问题解决

    namenode是Hadoop集群HDFS的管理节点,管理着整个分布式文件系统的命名空间,以及文件与块的映射关系等,在Hadoop集群中扮演着至关重要的作用. 我之前安装的Hadoop集群中namen ...

  2. Java中死锁的定位与修复

    死锁应该可以说是并发编程中比较常见的一种情况,可以说如果程序产生了死锁那将会对程序带来致命的影响:所以排查定位.修复死锁至关重要: 我们都知道死锁是由于多个对象或多个线程之间相互需要对方锁持有的锁而又 ...

  3. CSS矩形、三角形等

    1.圆形 CSS代码如下:宽高一样,border-radius设为宽高的一半 #circle { width: 100px; height: 100px; background: red; -moz- ...

  4. ajax经典面试题

    1.什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么是ajax: AJAX是“Asynchronous JavaScript and XML”的缩写.他是指一种创建交互式网页应 ...

  5. ssh网上商城源码

    本人承诺源码免费,只是出于前期发布很多免费资源反而落不到好下场,总是被一些人说三道四.就算你去找到资源版本不符合你也运行不起来.如果想要资源加QQ1397617269,或者电话短信1395630164 ...

  6. html+css手机端自动适应

    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scal ...

  7. Hibernate4集成spring4报错----No Session found for current thread

    在编写一个Hibernate4集成spring4的小demo的时候出现了该错误: org.hibernate.HibernateException: No Session found for curr ...

  8. http://www.layui.com/doc/modules/laydate.html实时通信\日期、==插件

    8520**ali chengyouli http://www.layui.com/doc/modules/laydate.html实时通信\日期.==插件

  9. PHP零基础入门

    字符函数库: 函数库基础 安装字符串函数库 字符串函数库列表 函数是可以实现特定功能,可以重复执行的代码段. 函数分 内置函数 和 用户函数. 内置函数是指PHP本身提供的各类库函数. 字符串函数库, ...

  10. [Swift]LeetCode231. 2的幂 | Power of Two

    Given an integer, write a function to determine if it is a power of two. Credits:Special thanks to @ ...