Java-异常处理
异常处理
一、异常体系结构

二 、常见异常类型
java.lang.Throwable
- java.lang.Error:一般不编写针对性的代码进行处理。
- java.lang.Exception:可以进行异常的处理
- 编译时异常(checked)
- IOException
- FileNotFoundException
- ClassNotFoundException
- 运行时异常(unchecked,RuntimeException)
- NullPointerException
- ArrayIndexOutOfBoundsException
- ClassCastException
- NumberFormatException
- InputMismatchException
- ArithmeticException
三、异常的处理
3.1 try-catch-finally
try{
//可能出现异常的代码
}catch(异常类型1 变量名1){
//处理异常的方式1
}catch(异常类型2 变量名2){
//处理异常的方式2
}catch(异常类型3 变量名3){
//处理异常的方式3
}
....
finally{
//一定会执行的代码
}
- finally是可选的,代码块中的语句一定会被执行
- 一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构
- catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错
- 常用的异常对象处理的方式: ① String getMessage() ② printStackTrace()
- 像数据库连接、输入输出流、网络编程Socket等资源,JVM不能自动的回收的,需要手动的进行资源的释放,就需要声明在finally中
3.2 throws
"throws + 异常类型"写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行!
3.3 使用
捕捉并处理知道如何处理的异常,而抛出不知道如何处理的异常。
四、自定义异常类
如何定义:
- 继承于现的异常结构:RuntimeException 、Exception
- 提供全局常量:serialVersionUID
- 提供重载的构造器
public class MyExceptionTest {
public static void main(String[] args) {
MyExceptionTest test = new MyExceptionTest();
test.method();
}
public void method() {
try {
method1();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public void method1() throws Exception {
throw new MyException("抛出异常!");
}
}
class MyException extends Exception {
static final long serialVersionUID = -33875353129948L;
public MyException() {
}
public MyException(String msg) {
super(msg);
}
}

浙公网安备 33010602011771号