九、异常和错误
- 异常
- 异常即exception
- 异常:可以预知、可以通过修改程序来弥补”错误”,可避免的
- 错误
- 错误:error
- 错误:无法预知的,系统级别的,程序员修改程序是无法修复的;例如:系统宕机,JVM挂掉了
- 粉红色的是编译时异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为 Checked Exception 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守.
- 绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除…
- 而声明为Error的,则属于严重错误,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或者不可能捕捉,将导致应用程序中断,Error不需要捕捉。
常见的异常总结:
- 1、java.lang.NullPointerException(空指针异常)
调用了未经初始化的对象或者是不存在的对象 - 2、java.lang.ClassNotFoundException
指定的类不存在 - 3、java.lang.NumberFormatException
字符串转换为数字异常 - 4、java.lang.IndexOutOfBoundsException
数组下标越界异常 - 5、 java.lang.ArithmeticException
数学运算异常 - 6、 java.lang.ClassCastException
数据类型转换异常 - 7、java.lang.FileNotFoundException
文件未找到异常 - 8、java.lang.IllegalArgumentException
方法的参数错误 - 9、 java.lang.NoSuchMethodException
方法不存在异常 - 10、java.lang.NoClassDefFoundException
未找到类定义错误 违背安全原则异常:SecturityException
操作数据库异常:SQLException
输入输出异常:IOException
通信异常:SocketException
- 异常的处理
- 功能抛出几个异常,功能调用如果进行try处理,需要与之对应的catch处理代码块,这样的处理有针对性,抛几个就处理几个。
特殊情况:try对应多个catch时,如果有父类的catch语句块,一定要放在下面。
- throws 和throw
- throws 方法声明时使用,表示该方法可能产生的异常,抛出,谁调用谁捕获处理,throws用在函数上。
- throw方法体中使用,表示抛出一个具体的异常对象,谁调用谁捕获处理,throw用在函数内。
- catch中存在return,此时finally中是否被执行?执行。但finally外边不执行。(其实就不能有语句)
|