JavaSE:异常总结(Exception)

整体结构:

       java.lang.Throwable

              java.lang.Error

              java.lang.Exception

                     java.lang.RuntimeException

编译时异常为受检异常(checked)

1.异常:程序在执行过程中发生的不正常情况,程序员可以捕获处理

错误:不期望被用户捕获的异常,如计算机硬件的损坏,内存溢出。

2.编译时异常:.java源文件在执行.javac命令时,产生的异常

运行时异常:.class字节码文件在执行.java命令时,产生的异常

Java要求必须处理编译时异常,但是并不要求一定处理未被捕获的运行时异常。

3.异常的处理:通过面向对象的方式来进行异常的处理,把各种不同的异常进行分类,并提供了良好的接口。

在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例。

可以通过try...catch()...的方式对异常进行处理,亦可以通过throws将异常对象抛出,抛给其调用者,由其调用者进行处理。

可以通过throw关键字主动的抛出一个异常。

4.throw:使用在方法内部,主动的抛出一个异常对象

throws:使用在方法的声明处,是异常处理的一种方式,将异常抛给其调用者,由调用者进行处理。

5.异常处理完成后,会在下一个垃圾回收过程中被回收掉。

6.注意finally语句块执行的时机,特别是当try和catch块中有return语句的时候。

7.自定义异常:

class MyException extends Exception{

	private static final long serialVersionUID = 1650608766435423666L;

	public MyException(){

	}

	public MyException(String message){
		super(message);
	}
}

8.几种常见的编译时异常:

FileNotFoundException: 发生在:将一个文件读取到流中

ClassNotFoundException: 反序列化时,有可能找不到类

IOException:发生在流的读取和写入时

SQLException:暂时还没有遇到

ParseException:通过制定的日期格式SimpleDateFormat对象对一个字符串进行转换时。

9.几种常见的运行时异常:

NullPointException:空对象的引用调用方法时

String str = "132";
str = null;
System.out.println(str.toString());

ArrayIndexOutOfBoundsException:数组下标越界

int[] arr = new int[10];
System.out.println(arr[10]);

ClassCastException:向下转型时

Object obj = new Object();
String string = (String) obj;
System.out.println(string);

ArithmeticException:算术异常,如除数为0

System.out.println(13/0);

IllegalArgumentException:不合法的参数

NoSuchElementException:直接调用iterator.next()会抛出此异常 InputMismatchException:Scanner/sacnner.nextInt()键入时输入非数字字符会抛出

InvalidClassException:反序列化异常,没有指定序列号,修改了类文件

可能有所欠缺,随时补充。

明天抽空补齐集合、泛型、IO部分的总结,今天太晚了。加油!

时间: 02-28

JavaSE:异常总结(Exception)的相关文章

启动tomcat后struts框架报异常严重: Exception starting filter struts2 Unable to load configuration.

启动tomcat后struts框架报异常严重: Exception starting filter struts2 Unable to load configuration. 出现此异常是因为,struts.xml定义的版本和 struts2-core-2.1.6.jar里面的struts-default.xml版本不一致!! struts-default.xml文件里面定义的<!DOCTYPE ...>如下: <!DOCTYPE struts PUBLIC "-//Apach

中断(interrupt)、异常(exception)、陷入(trap)

http://blog.chinaunix.net/cp.php?ac=blog 中断:是为了设备与CPU之间的通信.典型的有如服务请求,任务完成提醒等.比如我们熟知的时钟中断,硬盘读写服务请求中断.中断的发生与系统处在用户态还是在内核态无关,只决定于EFLAGS寄存器的一个标志位.我们熟悉的sti, cli两条指令就是用来设置这个标志位,然后决定是否允许中断.在单个CPU的系统中,这也是保护临界区的一种简便方法.中断是异步的,因为从逻辑上来说,中断的产生与当前正在执行的进程无关.事实上,中断是

Python中获取异常(Exception)信息

异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序结构.如下所示 try: ... except Exception as e: ... 1.str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常信息 'integer division or modulo by zero' 2.repr(e) 给出较全的异常信息,包括异

Java 异常基础 Exception

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话.不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案.也不许执行代码看真正答案哦.如果你的答案是正确,那么这篇文章你就不用浪费时间看啦. [java] view plaincopyprint? <span s

Visual C++ 异常(Exception)常见问题 (原文标题:A Visual C++ Exception FAQ)

Visual C++ 异常(Exception)常见问题 版权:Doug Harrison 2001 – 2007 翻译:magictong(童磊) 2011年3月 原文地址:http://members.cox.NET/doug_web/eh.htm 本文讨论了一些在Visual C++中实现的,关于 try{} catch(…) 和异常的问题.本文使用一问一答交流的方式来逐步深入的讨论,因此如果你以一个整体来读完全文将会获得更多的知识.为了让你对下面的讨论有一个大体上的认识,我们可以先浏览一

借助backtrace和demangle实现异常类Exception

C++的异常类是没有栈痕迹的,如果需要获取栈痕迹,需要使用以下函数: #include <execinfo.h> int backtrace(void **buffer, int size); char **backtrace_symbols(void *const *buffer, int size); void backtrace_symbols_fd(void *const *buffer, int size, int fd); backtrace将当前程序的调用信息存储在buffer中

Java异常(Exception)

1.Throwable.Error.Exception(必须处理的异常).RuntimeException(可处理可不处理异常,属于Exception的Subclass) 2.五个关键字try.catch.finally.throw.throws 3.异常应该先捕捉小的异常,再捕捉大的异常 4.重写带有throws异常的方法时,必须抛出与原方法一致的异常或者不抛出异常

如何处理异常? catch Exception OR catch Throwable

在Java中,当你需要统一处理异常的时候,你是会选择catch (Exception),还是直接catch (Throwable)? Java的异常体系 Throwable: Java中所有异常和错误类的父类.只有这个类的实例(或者子类的实例)可以被虚拟机抛出或者被java的throw关键字抛出.同样,只有其或其子类可以出现在catch子句里面. Error: Throwable的子类,表示严重的问题发生了,而且这种错误是不可恢复的. Exception: Throwable的子类,应用程序应该

异常(Exception)

1.Java中所有的异常类都会直接或间接地继承自Exception. 2.RuntimeException类也是直接继承自Exception类,它叫做运行时异常,Java中所有的运行时异常都会直接或间接地继承自RuntimeException. 3.Java中凡是继承自Exception而不是继承自RuntimeException的类都是非运行时异常. 4.异常处理的一般结构是: try { } catch(Exception e) { } finally { } 无论程序是否出现异常,fina