Java笔记--异常

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语句,则在处理异常之前先执行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:异常处理方式(声明方法可能要抛出的各种异常类)

时间: 2024-10-13 01:42:50

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

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

一.异常概念 Throwable类是Java中所有错误或异常的超类. 1.只有当对象是此类(或其子类)的实例时,才能通过Java虚拟机或着Java throw语句抛出.     2.只有此类或其子类才可以是catch字句中的参数类型.     3.有两个直接子类:Error和Exception         Error--指应用程序不应该去处理捕获的一种严重问题,常表示系统级的错误,如内存溢出        Exception--指程序需要捕获,需要处理的异常,是一种设计或实现方面的问题.  

java基础 异常学习笔记

1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正确的执行. 2.一旦产生异常之后,异常之后的语句并不会执行,而是直接结束程序,并将错误报告给用户. 3.在计算机发展史有两大杀手:断电,被除数为0(结果为无穷大,则程序内容会被全部占满). 处理异常的格式: try{// 可能出现异常的语句} catch(异常类异常对象){//编写异常的处理语句} ca

JAVA笔记:异常的基本概念

异常是指导致程序中断的一种指令流. 一旦产生异常之后,异常后面的语句不会执行,还是停留在异常位置,并且把异常报告给用户. 基本格式: try{ //要执行的语句 } catch(){ //抛出异常 } finally{ //异常的唯一出口 } 例如: public class ExceptionTest { public static void main(String args[]){ int i = 10; int j =0; try { int temp = i/j; System.out.

java笔记--使用线程池优化多线程编程

使用线程池优化多线程编程 认识线程池 在Java中,所有的对象都是需要通过new操作符来创建的,如果创建大量短生命周期的对象,将会使得整个程序的性能非常的低下.这种时候就需要用到了池的技术,比如数据库连接池,线程池等. 在java1.5之后,java自带了线程池,在util包下新增了concurrent包,这个包主要作用就是介绍java线程和线程池如何使用的. 在包java.util.concurrent下的 Executors类中定义了Executor.ExecutorService.Sche

13.4-全栈Java笔记:打飞机游戏实战项目|offScreenImage|GameObject|Plane

双缓冲技术解决闪烁问题 上节,我们实现了动画效果,但是发现窗口会不停的闪烁,体验度非常差.在实际开发中,绘制图形是非常复杂的,绘图可能需要几秒甚至更长时间,也经常发生闪烁现象, 为了解决这个问题,我们通常使用"双缓冲技术". 1)"双缓冲技术"的绘图过程如下: a. 在内存中创建与画布一致的缓冲区 b. 在缓冲区画图 c. 将缓冲区位图拷贝到当前画布上 e. 释放内存缓冲区 双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性

Java 笔记(8)

JSP 技术 day8 JSP语法 + EL + JSTL day9 案例 2-3 个 综合小案例 day10 Servlet+JSP 综合练习 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP支持HTML语法,生成HTML方便. JSP技术与Servlet 技术区别和关系? JSP和Servlet技术都是用来动态生成网页的,Servlet不支持HTML语法,生成网页麻烦,JSP支持HTML语法,生

Java笔记(10)

第一天 ----- 第十天 知识点复习 day1 XML 语法和两种约束技术 1.XML语法写法.规范: 根元素必须唯一.元素名称与属性名称不能以数字开始.元素标记必须结束.元素不能交叉嵌套.属性值必须加引号(双引号.单引号) ----- 考试:排错 2.CDATA块 与 特殊字符转义在 使用上区别 ? <book> <p>标记的作用 </book>  ----- 标记内容 <p> 是一个特殊内容 CDATA : <book> <![CDA

5.1-全栈Java笔记:面向对象的特征(一)继承 | 上

JAVA面向对象进阶 本章重点针对面向对象的三大特征:继承.封装.多态,进行详细的讲解.很多概念对于初学者来说,更多的是先进行语法性质的了解,不要期望,通过本章学习就"搞透面向对象".本章只是面向对象的起点,后面所有的章节说白了都是面向对象这一章的应用. 老鸟建议 建议大家,学习本章,莫停留!学完以后,迅速开展后面的章节.可以说这么说,以后所有的编程都是"面向对象"的应用而已! 继承(extend) 继承的实现 继承让我们更加容易实现类的扩展. 比如,我们定义了人类

java笔记整理

Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java和模式 Linux/Unix笔记 inode :存储编号(地址) ls -k:查看磁盘分区 ls -li:显示当前文件的inode号. 目录的大小跟文件的大小有关,跟目录里的文件(目录)数量无关. 一行多个命令的话,中间用分号分开.如:pwd;cal;date last | grep