黑马程序员_Java异常机制
2013-12-15 16:33
169 查看
------- android培训、java培训、java学习型技术博客、期待与您交流!
--------
1.异常
指在运行时期发生的不正常情况。在Java中用类的形式对不正常情况进行描述和封装对象,描述不正常的情况的类,就称为异常类。
Java中异常分为运行是异常和编译时异常。
运行时异常是由于数据的错误和程序本身缺陷导致的,是不可修饰的,所以当出现异常时,程序员要找出引发该异常的问题,并予以解决。
编译时异常通常是程序中调用了某些声明来了异常的方法,当调用这些被声明了异常的方法时,要对这些异常进行预处理。
throws和throw的区别 throws使用在函数上;
throw使用在函数内;
throws抛出的是异常类,可以抛出多个,用逗号隔开
throw抛出的是异常对象
class FushuIndexExceptionextends Exception{
FuShuIndexException()
{ }
FuShuIndexException(String msg)
{
super(msg);
}
}
classDemo
{
public int method(int[] arr,int index)
{
if(arr==null)
throw new NullPointerException("数组的引用不能为空!");
if(index>=arr.length)
{
throw newArrayIndexOutOfBoundsException("数组的角标越界啦:"+index);
}
if(index<0)
{
throw new FuShuIndexException("角标变成负数啦!!");
}
return arr[index];
}
}
class ExceptionDemo3
{
public static void main(String[] args) {
int[] arr = new int[3];
Demo d = new Demo();
int num = d.method(null,-30);
System.out.println("num="+num);
System.out.println("over");
}
}
2.自定义异常
在编写程序过程中,有些异常是Java中没有进行描述的,这时我们就要根据java描述异常的规则自定义异常类。自定义异常类时这个类要继承Exception类,并提供相应的构造函数。
至于自定义异常为什么要继承Exception,是因为Exception继承自Throwable,异常具有可抛性。这是Throwable体系的独有特性,如果自定义异常类时不继承Exception,那么自定义的异常不会具有异常固有的特征。
3.异常的捕捉处理
具体格式:
try{
//需要被检测异常的代码
}
catch(异常类 变量)//该变量用于接收发生的异常对象
{
//处理异常的代码
}
finally
{
//一定会被执行的代码
}
4.异常处理原则:
(1)函数内容如果抛出需要检测的异常,那么函数上必须声明,否则必须在函数内用try catch 捕捉,否则编译失效。
(2)如果调用了声明异常的函数,要么try catch 要么throws,否则编译失败。
(3)能解决的用catch,解决不了的,用throws告诉调用者,由调用者解决。
(4)一个功能如果抛出多个异常,那么调用时,必须有对应多个catch进行针对性的处理;内部有几个需要检测的异常,就抛出几个。
5.异常注意事项:
(1)子类在覆盖父类方法时,父类方法如果抛出异常,那么子类的方法只能抛出父类的异常或者该异常的子类。
(2)如果父类抛出多个异常,那么子类只能抛出父类异常的子集。如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,只能try.
------- android培训、java培训、java学习型技术博客、期待与您交流!
----------
详情请查看:http://www.itheima.com
--------
1.异常
指在运行时期发生的不正常情况。在Java中用类的形式对不正常情况进行描述和封装对象,描述不正常的情况的类,就称为异常类。
Java中异常分为运行是异常和编译时异常。
运行时异常是由于数据的错误和程序本身缺陷导致的,是不可修饰的,所以当出现异常时,程序员要找出引发该异常的问题,并予以解决。
编译时异常通常是程序中调用了某些声明来了异常的方法,当调用这些被声明了异常的方法时,要对这些异常进行预处理。
throws和throw的区别 throws使用在函数上;
throw使用在函数内;
throws抛出的是异常类,可以抛出多个,用逗号隔开
throw抛出的是异常对象
class FushuIndexExceptionextends Exception{
FuShuIndexException()
{ }
FuShuIndexException(String msg)
{
super(msg);
}
}
classDemo
{
public int method(int[] arr,int index)
{
if(arr==null)
throw new NullPointerException("数组的引用不能为空!");
if(index>=arr.length)
{
throw newArrayIndexOutOfBoundsException("数组的角标越界啦:"+index);
}
if(index<0)
{
throw new FuShuIndexException("角标变成负数啦!!");
}
return arr[index];
}
}
class ExceptionDemo3
{
public static void main(String[] args) {
int[] arr = new int[3];
Demo d = new Demo();
int num = d.method(null,-30);
System.out.println("num="+num);
System.out.println("over");
}
}
2.自定义异常
在编写程序过程中,有些异常是Java中没有进行描述的,这时我们就要根据java描述异常的规则自定义异常类。自定义异常类时这个类要继承Exception类,并提供相应的构造函数。
至于自定义异常为什么要继承Exception,是因为Exception继承自Throwable,异常具有可抛性。这是Throwable体系的独有特性,如果自定义异常类时不继承Exception,那么自定义的异常不会具有异常固有的特征。
3.异常的捕捉处理
具体格式:
try{
//需要被检测异常的代码
}
catch(异常类 变量)//该变量用于接收发生的异常对象
{
//处理异常的代码
}
finally
{
//一定会被执行的代码
}
4.异常处理原则:
(1)函数内容如果抛出需要检测的异常,那么函数上必须声明,否则必须在函数内用try catch 捕捉,否则编译失效。
(2)如果调用了声明异常的函数,要么try catch 要么throws,否则编译失败。
(3)能解决的用catch,解决不了的,用throws告诉调用者,由调用者解决。
(4)一个功能如果抛出多个异常,那么调用时,必须有对应多个catch进行针对性的处理;内部有几个需要检测的异常,就抛出几个。
5.异常注意事项:
(1)子类在覆盖父类方法时,父类方法如果抛出异常,那么子类的方法只能抛出父类的异常或者该异常的子类。
(2)如果父类抛出多个异常,那么子类只能抛出父类异常的子集。如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,只能try.
------- android培训、java培训、java学习型技术博客、期待与您交流!
----------
详情请查看:http://www.itheima.com
相关文章推荐
- 黑马程序员_关于java的处理异常机制
- 黑马程序员————Java基础之异常机制
- 黑马程序员-----java异常处理机制
- 黑马程序员———Java异常机制
- 黑马程序员_Java_异常机制及常见异常总结
- 黑马程序员 Java学习总结之Java异常机制
- 【黑马程序员】java中的---------------------异常机制
- 黑马程序员_Java异常处理机制
- 黑马程序员——浅谈java中的异常机制
- (每日一转)黑马程序员----跟着老毕学Java之异常机制
- 黑马程序员——Java(内部类、匿名内部类异常机制)
- 黑马程序员——Java基础:异常处理机制
- 黑马程序员-Java异常处理机制
- 黑马程序员_Java_异常机制及常见异常总结
- 黑马程序员_Java当中异常处理机制2
- 黑马程序员_Java_异常机制及常见异常总结
- 黑马程序员_关于java异常机制的学习
- 黑马程序员:JAVA异常处理机制
- 黑马程序员——Java基础 异常机制 (复习)
- 黑马程序员-Java异常处理机制