第五章_异常处理

异常处理

异常

异常的体系结构

 * java.lang.Throwable
 * 		|-----java.lang.Error:一般不编写针对性的代码进行处理。
 * 		|-----java.lang.Exception:可以进行异常的处理
 * 			|------编译时异常(checked)
 * 					|-----IOException
 * 						|-----FileNotFoundException
 * 					|-----ClassNotFoundException
 * 			|------运行时异常(unchecked,RuntimeException)
 * 					|-----NullPointerException
 * 					|-----ArrayIndexOutOfBoundsException
 * 					|-----ClassCastException
 * 					|-----NumberFormatException
 * 					|-----InputMismatchException
 * 					|-----ArithmeticException

异常的处理

异常处理方式一:try-catch-finally
try{
  		//可能出现异常的代码
    
   }catch(异常类型1 变量名1){
  		//处理异常的方式1
   }catch(异常类型2 变量名2){
 		//处理异常的方式2
   }catch(异常类型3 变量名3){
		//处理异常的方式3
   }
   ....
   finally{
  		//一定会执行的代码
   }

注意

1、catch中的异常类型如 果没子父类关系,则谁声明在上,谁声明在下无所谓
catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错

2、常用的异常对象处理的方式: ① String getMessage() ② printStackTrace()

3、在try结构中声明的变量,再出了try结构以后,就不能再被调用

异常处理方式二:throws + 异常类型&&手动抛异常
class Student{	
	private int id;
	public void regist(int id) throws Exception {
		if(id > 0){
			this.id = id;
		}else{
			//手动抛出异常对象
//			throw new RuntimeException("您输入的数据非法!");
//			throw new Exception("您输入的数据非法!");
			throw new MyException("不能输入负数");

		}	
	}
}

1、“throws + 异常类型” 写在方法的声明处。指明此方法执行时,可能会抛出的异常类型,一旦当方法体执行时,出现异常,仍会在 异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行!

2、throw 表示手动抛出一个异常类的对象

3、throws的方式只是将异常抛给了方法的调用者。并没真正将异常处理掉

4、如果父类中被重写的方法没throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法中异常,必 须使用try-catch-finally方式处理

5、子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型

throw 和 throws区别:

throw 表示抛出一个异常类的对象,生成异常对象的过程,声明在方法体内
throws 属于异常处理的一种方式,声明在方法的声明处

自定义异常

如何自定义异常类?

    1. 继承于现的异常结构:RuntimeException 、Exception
    1. 提供全局常量:serialVersionUID
    1. 提供重载的构造器
    public class MyException extends Exception{
    
    	static final long serialVersionUID = -7034897193246939L;
    
    	public MyException(){}
    
    	public MyException(String message){
    		super(message);
    	}
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值