(1)异常的产生原因
异常处理:就是指程序出现问题时依然可以正确的执行完程序。
(2)异常处理格式
try
{
可能出现异常的语句
}catch(异常类 异常对象)
{
异常处理
}
try{}catch(){}finally{}
(3)异常
ArithmeticException 表示数学异常,及当被除数为0时出现的异常。
通过异常处理可以控制程序的正确完结。
(4)异常处理流程
在java中,每当程序中出现了异常,实际上都是产生了一个异常类的实例化对象,这种处理格式实际上非常类似方法传参,只要参数类型匹配了,则就可以使用此catch进行处理。
实际上异常处理的最大父类:Throwable,但是一般开发中不会使用此种方式处理,因为其下有两个子类:
Error:Error一般表示JVM错误,与程序无关。
Exception:一般指的是程序中的错误,一般开发中如果要想进行程序的处理,基本用此类表示。
一般来讲在程序捕获的时候不要出现Throwable,因为表示的范围太大了。
捕获更细的异常要放在捕获更粗的异常之前
(5)throws关键字
throws关键字表示在方法中不处理异常,而交给被调用处处理异常。
如果在主方法处使用了throws关键字的话,则所有的异常交给JVM进行处理
(6)throw关键字
在程序中可以使用throw关键字人为地抛出一个异常。
RuntimeException
public static int parseInt(String s)throws NumberFormatException
其中NumberFormatException是RuntimeException的子类,那么也就是说只要是RuntimeException的异常对象,虽然使用了throws,但是在程序中也可以不使用try......catch进行处理。
(2)自定义异常
一个类只要继承异常则就成为异常类。
class MyException extends Exception{ // 自定义异常
public MyException(String msg){
super(msg) ;
}
};
public class ExceptionDemo13{
public static void main(String args[]){
try{
throw new MyException("自定义异常。") ;
}catch(Exception e){
e.printStackTrace() ;
}
}
};
(3)assert关键字
assert关键字表示断言,判断某值是否是
public class ExceptionDemo14{
public static void main(String args[]){
int i = 10 ;
assert i==110:"值错误!" ;///其中"值错误"是自己定义的
}
};
如果要想验证程序,则需要在执行时加入参数
java -ea ExceptionDemo14