`
caiwb1990
  • 浏览: 308906 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

异常总结

    博客分类:
  • java
阅读更多
异常:
	自定义异常:
	在java对一些常见的情况进行描述。形成了异常体系,
	但是在自定义的项目发生的特定问题,java并没有针对的描述
	所以按照java的面向对象思想,也可以对问题进行描述。
	1,定义一个类继承Exception。
		1.1为了让自定义的类具备可抛性。
		1.2为了让自定义的类可以获取Throwable中的方法。
	2,如果要给自定义异常定义信息描述。
		可以通过构造函数将信息通过super语句向上传递。
	
	class NoException extends Exception 
	{
		NoException()
		{
			super();
		}
		NoException(String message)
		{
			super(message);
		}
	}

	class Demo
	{
		void show(int x)throws NoException
		{
			if(x<0)
				throw new NoException("错错");//throw new RuntimeException("异常信息");
		}
	}
	如果函数内有throw进行异常抛出。那么函数上一定义要有对应的throws标识。

	特例情况:
	如果函数内容throw抛出的是RuntimeException或其子类。
	那么函数上可以不用throws标识。
	因为RuntimeException是运行时才会检查的异常。
	编译时期不会被检查。
	而其他的异常,都是编译时期的被检查的异常。所以必须要标识,否则编译失败。

	在自定义异常时,同样也可以继承RuntimeException。

	异常处理的规则:
	1,调用被throws标识的函数时,需要对该函数进行处理.
		a,继续抛出。
		b,通过try catch finally处理。
	2,当调用的功能抛出多个异常时,处理中的如果通过try catch,需要定义多个与之对应的catch进行处理。
		多catch出现时,一定要注意,父类的catch向下放。

	3,当子类覆盖父类时,只能抛出父类异常的子类,或者异常的子集。
		class Fu
		{
			void show()throws A,B,C{}
		}
		class Zi extends Fu
		{
			void show(){}
		}
		特殊:如果被覆盖的方法没有抛出异常。那么子类覆盖时,也不可以抛,但子类中还出现了异常。那么只能trycatch。
	4,函数内只要发生了异常,没有被catch,就必须要标识。当然,运行时异常除外。

	格式特点:
	try+catch(多个).  try+finally{}

	try+catch+finally{}
	只有catch是对异常的处理。没有catch就是没有处理异常。

	finally:该代码块中定义的语句一定会被执行。
		什么时候用呢?
		当关闭资源时,需要将关闭动作定义在finally当中。
		关闭数据库资源,关闭系统资源。
		只有一种情况读不到,System.exit(0);
	
	
	void checkUser(String name)
	{
		
		if(name.equals("abc"))//if("abc".equals(name))//if(name!=null && name.equals("abc"))
			System.out.println("ok");
		else
			System.out.pirntln("no");
	}

	异常的分层封装:
	show()throws NoException
	{
		try 
		{
			throw new SQLException();	
		}
		catch(Exception e)
		{
			throw new NoException("数据操作未成功");
		}
		
	}
		

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics