一、异常的分类
编译错误:编译错误是由于没有遵循Java语言的语法规则而产生的,这种错误要在编译阶段排除,否则程序不可能运行。
逻辑错误:逻辑错误是指程序编译正常,也能运行,但结果不是人们所期待的。
运行时错误:运行时错误是指程序运行过程中出现不可能执行的操作,就会出现运行时错误,运行时错误有时也可以由逻辑错误引起。
二、在程序运行过程中产生的异常类型:
1、java内部错误:Error类 这类异常不在用户程序的控制之内
2、是标准异常类:Exception类 这类异常是程序代码中的错误引起的,可以纠正。
3、用户自定义的异常类:在java中程序员是可以自己定义一个异常类,方便自己用于编程。
三、异常处理:
1、是抛出(throw)异常:1.程序运行出错 2.出错产生的异常与系统中预定义某个异常类相对应 3.系统自动产生一个该异常类的对象
2、是捕捉(catch)异常:1.当有异常对象抛出时,将在程序中寻找处理这个异常的代码, 2.如果找到处理代码,则把异常对象交给该段代码进行理
注意
1.语句中只能捕获到一个异常,并且是第一个异常,结束后,会直接往下面的代码块执行。
2.如果捕捉异常语句中没有任何错误,程序会正常运行,且跳过catch语句块。
四、异常抛出:
1 由系统自动抛出异常
2.认为的异常抛出
两种方式
① 在方法头写出需要抛出的异常(利用throws语句)
② 在方法体内抛出异常(利用throw语句)
注意两个单词的区别
①方法名()+throws+异常类型名{
方法体
}
②方法名(){
throw new+异常类型();
}
五、捕捉异常
try – catch语句块格式:
try{
//在此区域内或能发生异常;
}catch(异常类1 e1)
{ //处理异常1; }
…
catch(异常类n en)
{ //处理异常n; }
[finally
{ //不论异常是否发生,都要执行的部分; }
]
六、用户自定义的异常类:Java提供了很多异常类,但用户还是可以根据需要定义自己的异常类,即创建自定义异常类。
(1)用户自定义的异常类必须是Throwable类或Exception类的子类。
(2)自定义的异常类,一般只要声明两个构造方法,一个是不用参数的,另一个以字符串为参数。作为构造方法参数的字符串应当反映异常的信息。
(3)自定义异常类格式
class MyException extends Exception{
}
注:用户定义的异常同样要用try–catch捕获,但必须由用户自己抛出 throw new MyException().
例:
class Exception_exp{
public static void main(String[] args){
try {
System.out.println("2+3="+add(2,3));
System.out.println("-8+10="+add(-8,10));
}catch (Exception e){
System.out.println("Exception is "+e);
}
}
public static int add(int n,int m) throws UserException {
if (n<0|| m<0) throw new UserException();
return n+m;
}
}
class UserException extends Exception{
UserException(){
super("数据为负数");
}
}