1、异常分为两类:

--1)Error:Java虚拟机无法解决的严重问题(例如资源耗尽等);

--2)Exception:其他编程错误或偶然的外在因素导致的一般性问题(例如空指针异常、读取的文件不存在、网络中断等)。

2、捕获错误最理想的是在编译期间,然后有些错误只有在运行时才会发生(编译时异常(checked)、运行时异常(unchecked))。

3、常见的运行时异常:

--1)数组下标越界:ArrayIndexOutOfBoundsException;
--2)算术异常:ArithmeticException;
--3)类型转换异常:ClassCastException;

--4)空指针异常:NullPointerException;

4、Java提供的是异常处理的抓抛模型。

--程序执行过程中如出现异常,会生成一个异常类对象,该异常对象将被提交给Java运行系统,这个过程称为抛出异常;

--异常对象可由JVM自动生成,也可由开发人员手动创建。

5、try{}

  catch(Exception1 e1){}//catch可以多写,try中抛出的异常类对象从上往下匹配catch中的异常类类型,

  catch(Exception2 e2){}//一旦满足就执行catch中的代码,该catch以后的其他catch不在匹配。

  finally{//一定会被执行的代码}//finally为可选

6、对于运行时异常,可不进行显示的异常处理,但是对于编译时异常,则必须进行异常处理。

7、若有多个catch语句,且异常类对象存在继承关系,则子类必须写在父类前面,否则无法通过编译。

8、若存在finally语句,则在处理异常结束之前(如return)将执行finally里面的语句。

9、若不知道如何对异常进行处理,则可在方法声明处,显示的抛出该异常对象的类型,由该方法的调用者负责处理(throws),若调用者也不知道如何处理异常,则继续向上一调用者抛出该类异常,最高可抛给虚拟机进行处理。

10、手动抛出的异常类对象可以是已提供的异常类,也可以是自定义的异常类。

--例:

public class MyException extends Exception{
static final long serialVersionUID = -123435;//提供一个唯一的序列号
//提供几个构造器
public MyException(){
super();
}
public MyException(String str){
super(str);
}
}

11、子类重写父类的方法,其抛出的异常类型只能是被重写的方法的异常类的子类或异常类型一样。

12、异常总结(抓抛模型):

--try:执行可能产生的异常的代码

--catch:捕获异常

--finally:无论是否发生异常,代码总被执行

--throw:异常发生阶段(手动抛出异常对象)

--throws:异常处理方式(声明方法可能要抛出的各种异常类)

Java笔记--异常的更多相关文章

  1. java笔记--异常详解与处理

    一.异常概念 Throwable类是Java中所有错误或异常的超类. 1.只有当对象是此类(或其子类)的实例时,才能通过Java虚拟机或着Java throw语句抛出.     2.只有此类或其子类才 ...

  2. Java笔记 - 异常机制

    JAVA异常机制是Java提供的用于处理程序在运行期可能出现的异常事件(如数组下标越界.文件不存在等)的一种机制,使程序不会因为 异常的发生 而 阻断或产生不可预见的结果 .而且还可以将逻辑代码与错误 ...

  3. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  4. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  5. 转 Java笔记:Java内存模型

    Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...

  6. Java笔记---枚举类和注解

    Java笔记---枚举类和注解 一.枚举类 自定义枚举类 方式一:JDK5.0之前自定义枚举类 class Seasons { //1. 声明Seasons对象的属性 private final St ...

  7. java的异常

    下面是我对Java异常知识的几个小总结,也算是资源回收一下 一.Java异常的知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.比如说,你的代码少了一个分号,那么运 ...

  8. 《java中异常和错误》

    异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发 ...

  9. Atitit java的异常exception 结构Throwable类

    Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...

随机推荐

  1. Redis数据库与python的交互

    1.安装redis模块:pip install redis 2.安装好以后主要使用redis模块中的StrictRedis对象,用于连接redis服务器 3.代码如下: from redis impo ...

  2. Flask程序相关配置加载的三种方式

    方式一:从对象中加载配置 1.定义配置类,在配置类中添加相应的配置 2.通过app.config.from_object(配置类)进行加载 代码如下: from flask import Flask ...

  3. PAT T1005 Programming Pattern

    建立后缀数组,遍历height数组找到连续大于len的最长子序列~ #include<bits/stdc++.h> using namespace std; ; char s[maxn]; ...

  4. spring mvc web应用启动时就执行特定处理(线程启动)

    package com.sdt.platform.index.controller; import java.net.URL; import java.util.List; import java.u ...

  5. 采用Keepalived+Nginx解决方案实现高可用的API网关(下)

    1 Keepalived 3.1Keepalived介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx ...

  6. SSIS 無法將保護的 XML 節點 "DTS:Password" 解密,錯誤為 0x8009000B "機碼用在特定狀態時無效

    发现之前部署的SSIS,执行失败,查看日志 來源: 描述: 無法將保護的 XML 節點 -- ::-- ::-- :: DataReader 來源 [] 描述: System.Exception: S ...

  7. 「JLOI2011」飞行路线

    前言 看到好多大佬都在跑分层图最短路,\(\text{DP}\) 解法的我瑟瑟发抖... 题目描述 给定一张 \(N\) 个点(点编号从 \(0\) 到 \(N-1\)),\(M\) 条边的无向带权图 ...

  8. Python 基础之生成器

    一.生成器表达式 生成器本质是迭代器,允许自定义逻辑的迭代器迭代器和生成器区别:迭代器本身是系统内置的,重写不了.而生成器是用户自定义的,可以重写迭代逻辑生成器可以用来钟方式创建:    (1)生成器 ...

  9. 【JAVA蓝桥杯】基础练习2 十六进制转十进制

    资源限制 时间限制:1.0s   内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A ...

  10. unittest---unittest生成测试报告

    我们做测试的人员们都知道测试完成后,肯定是会生成一个测试报告,那么当我们做自动化的时候,这个自动化报告也可以自动生成吗?python当然可以了! HTMLTestRunner HTMLTestRunn ...