异常总结


异常:
自定义异常:
在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("数据操作未成功");
}

}


你可能感兴趣的:(java)