初步学习对于异常的总结

异常:

通俗讲就是程序在运行时出现不正常情况。

  1. 异常由来
    问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述。并封装成对象。
    其实就是java对不正常情况进行描述后的对象体现。

    对于问题的划分 两种:一种是严重的问题,一种非严重的问题。

-对于严重的,java通过Error类进行描述。
对于Error- -般不编写针对性的代码对其进行处理.


-对与非严重的,java通 过Exception类进行描述。
对于Exception可以使用针对性的处理方式进行处理。

无论Error或者Exception都具有一些共性 内容。
比如:不正常情况的信息,引发原因等。

  1. 异常的处理
    java提供了特有的语句进行处理。
try
	{
		需要被检测的代码;
	}
	catch(异常类变量)
	{
		处理异常的代码;(处理方式)
	}
	finally
	{
		一定会执行的语句
	}
  1. 对捕获到的异常对象进行常见方法操作
    string getMessage () : 获取异常的信息
    String toString():异常名称,异常信息
    e.printStackTrace();异常名称,异常信息,异常出现的位置

  2. 对多异常的处理.

    • 声明异常时,建议声明更为具体的异常。这样处理的可以更具体。
    • 对方声明几个异常,就对应有几个catch块。 不要定义多余的catch块。
      如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
    • 建立在进行catch处理时,catch中一 定要定义具体处理方式。
      不要简单定义一句e.printstackTrace(),也不要简单的就书写一条输出语句

自定义异常。

基本操作
当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。
要么在内部try catch处理。
要么在函数.上声明让调用者处理。
一般情况在,函数内出现异常,函数上需要声明。

  • 如何定义异常信息呢?
    因为父类中已经把异常信息的操作都完成了.
    所以子类只要在构造时,将异常信息传递给父类通过super语句.
    那么就可以直接通过getMessage方法获取自定义的异常信息。

  • 自定义异常:
    必须是自定义类继承Exception.

  • 继承Exfeption原因:
    异常体系有一个特点:因为异常类和异常对象都被抛出.
    他们都具备可抛性。这个可抛性是Throwable这个体系中独有特点。
    只有这个体系中的类和对象才可以被throws和throw操作。
    throws和throw有局限性,只有继承了Exception,Throwable,Error可以用

    • throws和throw区别:
      1)作用不同:
      throw用于程序员自行产生并抛出异常;
      throws用于声明在该方法内抛出了异常
      2) 使用的位置不同:
      throw位于方法体内部,可以作为单独语句使用;
      throws必须跟在方法参数列表的后面,不能单独使用。
      3)内容不同:
      throw抛出一个异常对象,且只能是一个;
      throws后面跟异常类,而且可以有多个。

异常与自定义异常代码见如下

  • 异常练习代码
class Demo1
{
	int div(int a,int b) throws ArithmeticException,ArrayIndexOutOfBoundsException //在功能上通过throws的关键字声明了该功能有可能会出现问题.
										//在函数上声明异常.	
	{									
		int [] arr = new int[a];		//便于提高安全性,让调用出进行处理。不处理编译失败.
		System.out.println(arr[4]);
		return a/b;    //除0  产生 new AritchmeticException()
	}
	
	
}
public class 面向对象09_06异常 {
	public static void main(String[] args)//throws Exception  抛出异常
	{
		Demo1 d=new Demo1();
		try 
		{
			//需要被检测的代码;
			int x = d.div(5, 0);//除0  产生 new AritchmeticException()
			System.out.println("x="+x);
		} 
		catch (ArithmeticException e) //(异常类变量)Exception e = new AritchmeticException()
		{
			//处理异常的代码;(处理方式)
			//一般工程里面搞个日志文件便于管理者处理异常
			//不可以简单的一个输出语句
			System.out.println("除零了"+'\n');
			System.out.println(e.getMessage()+'\n');//异常信息
			System.out.println(e.toString()+'\n');//异常名称,异常信息
			
			e.printStackTrace();//异常名称,异常信息,异常出现的位置
			
		}
		
		catch (ArrayIndexOutOfBoundsException e) 
		{
			System.out.println("数组越界了"+'\n');
			System.out.println(e.toString()+'\n');
		}
		System.out.println("over");
	}
}
  • 自定义异常练习代码
//自定义异常
class FuShuExceotion extends Exception
{
/*	
	class Throwable   //是Exception子类
	{
		private String msg;
		Throwable(String msg)
		{
			this.msg=msg;
		}
		public String Getmsg()
		{
			return msg;
		}
	}
*/
	
	
	private int value;
	public FuShuExceotion(String msg,int value)
	{
		super(msg);//继承了上面父类 Throwable
		this.value=value;
	}
	public int GetValue()
	{
		return value;
	}
}

class Demo2
{
	int div(int a,int b) throws FuShuExceotion
	{
		if(b<0)
			throw new FuShuExceotion("出现了除数是负数的情况  	/by fushu",b);
				//手动通过throw关键字抛出一个自定义异常对其定义情况
		return a/b;
	}
}
public class 面向对象09_09自定义异常 {
	public static void main(String[] args) 
	{
		Demo2 d = new Demo2();
		try 
		{
			//测试语句
			int x= d.div(4, -1);
			System.out.println("x="+x);
		} 
		catch (FuShuExceotion e) 
		{
			//处理方法
			System.out.println(e.toString());//异常名称,异常信息
			System.out.println("错误的负数是:"+e.GetValue());
		}
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值