java学习笔记2——异常
2016-07-22 14:34
183 查看
1、Java异常介绍
总类;Throwable 是一个接口 有两个子类 Exception (z主要了解和使用的), Error(系统级别的异常,不可控)
Exception 下面很又很多异常,常见有空指针异常,造型异常....
异常捕获机制:try-catch
try块:包含可能出现的错误代码片段
catch块:包含try块出现错误的种类,可以出现1-n次。好的编程习惯在最后一次捕获Exception异常
catch的捕i获由上到下,所以不要把父类的异常放上面,下面的子类异常永远不会执行,报错
2、throw
主动抛出异常。一般使用在业务逻辑上的出错。
方法中有参数的时候,方法由逻辑引发的错误就可以使用主动抛出异常。若是由自身方法引发的异常,应由方法自身解决
3、throws
使用在方法,因参数问题,方法自身不能解决,抛给方法的调用者。使用直接在方法后面加上 throws 异常的类型
--------------
throw 与 throws 的区别
throw是主动抛出异常
throws是方法中自身不能解决抛出异常给方法调用者解决
--------------
4、Exception异常
运行时异常:在编译时不进行检查的异常(RuntimeException)
可检查异常:在编译的时候进行检查
在方法中使用throw时,如果是运行时异常可以不要再方法中抛出异常,如果不是咋需要使用关键字throws抛出异常,否则话编译不通过!!
常见的运行时异常有:NullPointerException (空指针)、StringIndexOutOfBoundsException (字符串数组越界)、 造型异常
5、finally
无条件执行
public class FinallyDemo {
public static void main(String[] args) {
System.out.println(
test(null)+","+test("0")+","+test(""));
/**
* 输出结果?
* 1,0,2
* 4,4,4正确结果
*/
}
public static int test(String str){
try {
return str.charAt(0)-'0';
} catch (NullPointerException e) {
return 1;
}catch (RuntimeException e) {
return 2;
}catch (Exception e) {
return 3;
}finally{//在这里面最好不要return
return 4;
}
}
一个小例子:最后结果是4,4,4 不是1,0,2.
可以说finally语句无条件太强大了,可以覆盖原来的return返回值
----------
作为笔试题目比较......
----------
6、继承某个类时,其中方法有抛出异常的话,重写这个方法的的异常可以不写,或者抛出的异常只能是父类方法中异常中的子类(也相当于异常已有继承关系)
总类;Throwable 是一个接口 有两个子类 Exception (z主要了解和使用的), Error(系统级别的异常,不可控)
Exception 下面很又很多异常,常见有空指针异常,造型异常....
异常捕获机制:try-catch
try块:包含可能出现的错误代码片段
catch块:包含try块出现错误的种类,可以出现1-n次。好的编程习惯在最后一次捕获Exception异常
catch的捕i获由上到下,所以不要把父类的异常放上面,下面的子类异常永远不会执行,报错
2、throw
主动抛出异常。一般使用在业务逻辑上的出错。
方法中有参数的时候,方法由逻辑引发的错误就可以使用主动抛出异常。若是由自身方法引发的异常,应由方法自身解决
3、throws
使用在方法,因参数问题,方法自身不能解决,抛给方法的调用者。使用直接在方法后面加上 throws 异常的类型
--------------
throw 与 throws 的区别
throw是主动抛出异常
throws是方法中自身不能解决抛出异常给方法调用者解决
--------------
4、Exception异常
运行时异常:在编译时不进行检查的异常(RuntimeException)
可检查异常:在编译的时候进行检查
在方法中使用throw时,如果是运行时异常可以不要再方法中抛出异常,如果不是咋需要使用关键字throws抛出异常,否则话编译不通过!!
常见的运行时异常有:NullPointerException (空指针)、StringIndexOutOfBoundsException (字符串数组越界)、 造型异常
5、finally
无条件执行
public class FinallyDemo {
public static void main(String[] args) {
System.out.println(
test(null)+","+test("0")+","+test(""));
/**
* 输出结果?
* 1,0,2
* 4,4,4正确结果
*/
}
public static int test(String str){
try {
return str.charAt(0)-'0';
} catch (NullPointerException e) {
return 1;
}catch (RuntimeException e) {
return 2;
}catch (Exception e) {
return 3;
}finally{//在这里面最好不要return
return 4;
}
}
一个小例子:最后结果是4,4,4 不是1,0,2.
可以说finally语句无条件太强大了,可以覆盖原来的return返回值
----------
作为笔试题目比较......
----------
6、继承某个类时,其中方法有抛出异常的话,重写这个方法的的异常可以不写,或者抛出的异常只能是父类方法中异常中的子类(也相当于异常已有继承关系)
相关文章推荐
- 全面理解java中的异常处理机制
- JAVA学习系列之一-搭建开发环境
- 【JAVA学习笔记】总结学习J2EE中一些值得研究的开源项目(转)
- Java学习之路:不走弯路,就是捷径
- Java学习路线
- java成为移动互联网时代必学语言的六大理由
- java学习迷惘了怎么办,十几名网友分享的java学习技巧
- Java学习之路:不走弯路,就是捷径!【转】
- JAVA学习中容易混淆的几个知识点
- Java学习记录_Eclipse环境搭建
- java学习心得与体会(自我鼓励)
- Hashmap的简单实用(成果展示)
- Java旅程起航了!
- 这几天学习java里面的子类父类继承接口重载重写。学的好吃力。我得想办法赶紧理解理解!
- 黑马程序员JAVA笔记1--java基础和概述
- 黑马程序员JAVA笔记4--继承
- 黑马程序员JAVA笔记5--多线程
- 黑马程序员JAVA笔记7--IO
- 黑马程序员JAVA笔记9--反射
- 黑马程序员JAVA笔记10--正则