黑马程序员 java学习笔记——异常
2014-08-01 12:22
369 查看
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流!
----------------------
概述
概念:程序运行时期发生的不正常情况由来:问题也是现实生活中的事物,也可以通过Java类进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。
体系:一种是Error,一种是Exception。由于发现这俩大类中还有很多共性东西,所以又进行了抽取。抽取成了Throwable。
Error:对于严重的异常,java通过Error类进行描述,对于Error一般不编写针对性的代码对其进行处理
Exception:对于非严重的,java通过Exception类进行描述,对于Exception可以使用针对性的处理方式进行处理。
异常的处理
异常的处理分两种方式:try..catch和throws抛异常
try...catch异常捕获的三种方式:
try{ 可能发生异常的代码; } catch(接收捕获异常类的对象 异常类引用变量){ 处理代码; }
try{ 可能发生异常的代码; } fianlly{ 一定要执行的语句;(通常用于关闭资源) }
try{ 可能发生异常的代码; } catch(捕获异常类的对象 异常类引用变量){ 处理代码; } finally{ 一定要执行的语句;(通常用于关闭资源) }PS:将必须要运行的代码放入finally代码块中。
try...catch异常的示例代码
class Demo{ int div(int a,int b){ return a/b; } } class ExceptionDemo{ public static void main(String[] args){ Demo d=new Demo(); try{ int x=d.div(4,0); System.out.println(x); }catch(Exception e){ System.out.println("除零啦!"); } System.out.println("over"); } }
throws异常的示例代码
class Demo{ int div(int a,int b) throws Exception{ return a/b; } } class ExceptionDemo{ public static void main(String[] args) throws Exception{ Demo d=new Demo(); int x=d.div(4,0); System.out.println(x); System.out.println("over"); } }
throws和throw的区别
1、throws使用在函数上,throw使用在函数内2、throws后面跟的是异常类,可以跟多个,用逗号隔开;throw后跟的是异常对象
RuntimeException
1、如果在函数中抛出该异常,函数上可以不用声明,编译一样通过;2、如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。
PS:该异常之所以不用在函数上声明,是因为不需要让调用者处理。当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后由程序员对代码进行修正。
自定义异常时,如果该异常的发生无法再继续运算,就让自定义异常继承 RuntimeException。
练习
关于毕老师用电脑上课的异常处理
示例代码如下:class LanPingException extends Exception{ LanPingException(String message){ super(message); } } class MaoYanException extends Exception{ MaoYanException(String message){ super(message); } } class Computer{ private int state=1; public void run() throws LanPingException,MaoYanException{ if(state==2) throw new LanPingException("蓝屏了"); if(state==3) throw new MaoYanException("冒烟了"); System.out.println("电脑运行"); } public void reset(){ System.out.println("电脑重启"); } } class NoPlanException extends Exception{ NoPlanException(String msg){ super(msg); } } class Teacher{ private String name; private Computer cmpt; Teacher(String name){ this.name=name; cmpt=new Computer(); } public void prelect() throws NoPlanException{ try{ cmpt.run() }catch(LanPingException e){ cmpt.reset(); }catch(MaoYanException e){ test(); throw new NoPlanException("课时无法继续"+e.getMessage()); } System.out.println("讲课"); } public void test(){ System.out.println("练习"); } } public class Demo{ public static void main(String[] args){ Teacher t=new Teacher("毕老师"); try{ t.prelect(); }catch(NoPlanException e){ System.out.println(e.toString()); System.out.println("换老师,或者放假"); } } }
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流!
----------------------
相关文章推荐
- 黑马程序员java学习笔记——内部类、异常、包
- 黑马程序员——Java异常处理学习笔记
- java 异常处理 黑马程序员学习笔记(6)
- 黑马程序员 JAVA学习笔记 ——— 异常
- 黑马程序员-Java学习笔记之异常和包
- 【黑马程序员】Java学习笔记--异常
- 黑马程序员--Java基础学习笔记【异常处理】
- 黑马程序员 java学习笔记 Day1:异常
- 黑马程序员—7—Java基础:有关异常学习笔记和学习心得体会
- 黑马程序员--Java学习笔记之面向对象思想(多态、内部类、匿名内部类、异常类)
- 黑马程序员 Java基础学习笔记11 异常
- 黑马程序员---- Java学习笔记:1.异常 2.集合
- 黑马程序员java学习笔记之四(java多线程总结)
- 黑马程序员-javaIO学习笔记2
- 黑马程序员 java学习笔记2-IO流
- 黑马程序员java学习笔记之二(java中的多态性)
- 黑马程序员 java学习笔记4-Io流学习后可能会用到的实例
- 黑马程序员学习笔记之七(Java IO操作)
- 黑马程序员学习笔记之八(Java 反射机制)
- 黑马程序员 java学习笔记3-IO流之字节流与装饰设计模式