黑马程序员_异常(Exception)

------- android培训java培训、期待与您交流! ----------

异常:是程序在运行时出现的不正常情况

异常的由来:问题也是生活中的具体事物,也可以通过java形式描述并封装成对象,java对不正常情况描述后的对象体现分为严重问题和非严重问题

严重的问题:error 不编写针对性的代码处理

非严重的问题:exception 可以使用针对性的处理方式处理

异常处理语句

try

{

	需要检测的代码

}

catch (异常类 变量)

{

	处理异常的代码

}

finally

{

	一定会执行的语句

}


 

对捕捉到的对象常见方法操作

String  getMessage();//返回此 throwable 的详细消息字符串

String  toString();// 返回此 throwable 的简短描述

void   printStrackTrace();//提供编程访问由 printStackTrace() 输出的堆栈跟踪信息

异常声明throws

int div(int a ,int b) throws Exception{}

异常的处理

要么抛出,要么try catch 处理

抛出异常时,最好声明更具体的异常,以便更具体的处理

声明几个异常就要有几个catch块不要定义多余的catch块,如果多个catch块中的异常出现继承关系,父类放在最下面

自定义异常:

项目中会出现特有问题,且并未被java 描述封装成对象,可以按照java封装问题的思想,将特有问题自定义异常封装

需求:除数是负数也视为无法进行的运算,那么就需要将这个问题进行自定义描述。

当函数内部出现throw 抛出异常的对象,要给出相应的处理动作

如下:

  class FushuException extends Exception //自定义异常要继承Exception
  {
  	private  int value;
  	FushuException(String msg,int value)//构造函数初始化
  	
  	{
  		super(msg);//引用指向父类的构造函数
  		this.value=value;
  		
  		}
  		
  			int getValue()
  			{
  				return value;
  				}
  		
  	}
  //在函数上声明让调用者处理
  class Demo
  {
  	int div(int a,int b) throws FushuException//函数上由throws声明异常,调用者处理异常
  	{
  		if(b<0)
  		throw new FushuException("除数是负数",b);//函数内部出现异常,由throw 抛出异常对象
  			return a/b ;
  		}
  	}
  	
  	class ExceptionDemo
  	{
  		public static void main(String[] args)
  		{
  			
  			Demo d=new Demo();
  			try
  				{
  					int x=d.div(4,-3);
  					System.out.println("x="+x);
  					}
  				catch(FushuException e)// 调用者处理异常
  				{
  							System.out.println(e.toString());
  									System.out.println("这个负数是:"+e.getValue());
  					}
  			
  			
  				
  		
  			System.out.println("over");
  			
  			}
  		}


 

自定义异常注意

必须是自定义类继承Exception,因为异常体系中,异常类和异常对象都被抛出,他们具有可抛性,可抛性是Throwable 体系独有的特点,只有体系中的类和对象可以使用throw throws

throw throws 的区别:

throws 用在函数上,throw 用在函数内

throws 后可以跟多个异常类,throw 后面跟一个异常对象

RuntimeException 

如果函数内抛出该异常,函数上可以不用声明

如果函数上声明了该异常,调用者可以不用对该异常进行处理

ArithmeticExceptionNullPointerExceptionIndexOutofBoundException都是runtimeException 的子类

对于异常分为两种

1,编译时被检测出的异常

2,编译时不被检测的异常(一般都是运行时异常,即RuntimeException及其子类)

finally

Finally代码块内存放的是一定要执行的代码,通常用于关闭资源

异常的好处

1,将问题封装

2,将正常流程代码和问题处理代码相分离,方便阅读

异常处理原则

1,处理方式有两种,try catch throws

2,调用到抛出异常的功能时,抛出几个异常处理几个

3,多个catch块,父类的放在最下面

4catch内定义针对性处理方式

------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值